395
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
4cifre şi sunt numerotate de la1lan - 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;
}
Comentarii