fbpx

Problema #300 – SumaInSecv – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dă un vector format din n elemente, numere naturale nenule, şi un număr natural S. Determinaţi, dacă există o secvenţă de elemente din şir cu suma elementelor egală cu S.

Date de intrare

Fişierul de intrare sumainsecv.in conţine pe prima linie numerele n şi S; urmează cele n elemente ale vectorului, dispuse pe mai multe linii şi separate prin spaţii.

Date de ieşire

Fişierul de ieşire sumainsecv.out va conţine pe prima linie numerele p şi u, separate printr-un spaţiu, reprezentând indicele de început şi de sfârşit al secvenţei determinate.

Restricţii şi precizări

  • 1 ≤ n ≤ 100
  • elementele vectorului vor avea cel mult 4 cifre şi sunt numerotate de la 1 la n
  • dacă vectorul nu conţine nici o secvenţă cu suma elementelor S, se va afişa 0 0
  • dacă şirul conţine mai multe secvenţe cu suma elementelor egală cu S, se va determina cea mai din stânga

Exemplu

sumainsecv.in

8 32  
12 10 15 7 17 13 19 14

sumainsecv.out

2 4

Explicație

Există două secvenţe cu suma elementelor egală cu 32: 10 15 7 şi 13 19. Dintre acestea, 10 15 7 este cea mai din stânga.

#include <bits/stdc++.h>
using namespace std;
ifstream fin("sumainsecv.in");
ofstream fout("sumainsecv.out");
int main()
{
    int n , smax , a[105];
    fin >> n >> smax;
    int st = 0, dr = 0;
    for(int i = 1 ; i <= n ; ++i) fin >> a[i];
    for(int i = 1 ; i <= n && st == 0 ; ++i)
        for(int j = i ; j <= n && st == 0 ; ++j)
        {
            int sum = 0;
            for(int k = i ; k <= j ; ++k)
                sum += a[k];
            if(sum == smax)
                st = i, dr = j;
        }
    fout << st << " " << dr;
    return 0;
}
Comentarii

S-ar putea sa iti placa