pbinfo #300capitolul 5 · Secvențe sumainsecv.in → sumainsecv.outMai greapunctajul tău: 100p

SumaInSecv

Prima bucată de vecini cu suma S

01

Enunțul pe scurt

Rezumat. Textul complet e pe pbinfo.

În sumainsecv.in ai n și S, apoi n numere naturale nenule.

Cauți o secvență (elemente vecine) cu suma exact S. Dacă sunt mai multe, o vrei pe cea care începe cel mai în stânga.

Scrii pozițiile de început și de sfârșit (numerotate de la 1). Dacă nu există, scrii 0 0.

ComparațieAi un șir de monede pe masă și vrei să iei monede vecine care să facă fix S lei. Pornești de la prima monedă și tot adaugi monede din dreapta. Dacă ai trecut de S, încerci de la următoarea monedă.
Primeștisumainsecv.in: n și S, apoi n numere.
Afișezisumainsecv.out: pozițiile p și u (de la 1) sau 0 0.
Problemă cu fișiereCitești din sumainsecv.in și scrii în sumainsecv.out, apoi fout.Close(). Lecția despre fișiere
02

Exemplu

Fă-l întâi pe hârtie, fără cod.

sumainsecv.in
7 10
2 5 1 4 6 3 7
sumainsecv.out
2 4
De ceDe la poziția 1: 2, 7, 8, 12, am trecut de 10. De la poziția 2: 5, 6, 10, gata! Pozițiile 2…4 (5 + 1 + 4 = 10).

Exemplul de aici e făcut pentru platformă și verificat cu soluția. Exemplul oficial îl găsești în enunțul de pe pbinfo.

Încă 2 teste
intrare 2
3 100
1 2 3
ieșire 2
0 0
intrare 3
4 6
6 1 2 3
ieșire 3
1 1
Primul element singur are deja suma 6.
03

Animație pas cu pas

Mergi cu săgețile sau apasă Pornește. Poți pune și numerele tale.

v (indici de la 1)
2
1
5
2
1
3
4
4
6
5
3
6
7
7
S 10p 0u 0
1/9Căutăm vecini cu suma S = 10. Încercăm fiecare început i, de la stânga.
fișierul sumainsecv.out
elementul curent bun / păstrat respins comparat ținut minte
04

Indicii

Deschide doar câte ai nevoie.

05

Scrie și rulează

Codul rulează direct în browser. „Verifică pe teste” compară rezultatul ca evaluatorul pbinfo.

compilatorul pornește la prima rulare
fișierul sumainsecv.in
fișierul sumainsecv.out
Apasă Rulează ca să vezi rezultatul.
06

Ideea, pe pași

  1. Citești n, S și vectorul în v[1..n].
  2. Pentru fiecare început i: suma = 0, aduni spre dreapta.
  3. La suma == S, salvezi p, u și te oprești de tot.
  4. Scrii p și u (rămân 0 0 dacă n-ai găsit).
07

Soluția comentată

Verificată automat pe toate testele de mai sus.

Soluția e ascunsă

Încearcă întâi singur(ă), cu indiciile și editorul de mai sus. Când vrei să compari sau te-ai blocat, deschide-o.

08

Greșeli de evitat

La încercarea ta100 de puncte.
  • Pozițiile se afișează de la 1.
  • break iese doar din bucla în care se află.
  • Valorile inițiale p = u = 0 rezolvă singure cazul «nu există».
09

Întrebări

Două întrebări scurte. Se salvează cel mai bun scor.

ÎntrebăriÎntrebarea 1 din 2

n = 4, S = 5, v = 1 1 3 5. Ce se afișează?