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 la1
lan
- dacă vectorul nu conţine nici o secvenţă cu suma elementelor
S
, se va afişa0 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; }