Rezolvare completă PbInfo #300 SumaInSecv

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema SumaInSecv:

#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("sumainsecv.in");
ofstream fout("sumainsecv.out");

int n, S, a[105];

int main(){
    fin >> n >> S;
    int ii=0, jj=0;
    for(int i=1;i<=n;++i)
        fin >> a[i];
    for(int i=1 ; i<=n && ii==0 ; ++i)
        for(int j=i ; j<=n && ii==0 ; ++j)
        {
            int sum = 0;
            for(int k=i;k<=j;++k)
                sum += a[k];
            if(sum == S)
                ii = i, jj = j;
        }
    fout << ii << " " << jj;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #300 SumaInSecv

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #300 SumaInSecv de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!