0% au considerat acest document util (0 voturi)
126 vizualizări3 pagini

Secventa

Documentul prezintă noțiunea de secvență impar-încadrată a unui șir de numere naturale și cere determinarea secvențelor de lungime maximă dintr-un fișier de numere separate prin spațiu.

Încărcat de

Sonia Manjina
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
126 vizualizări3 pagini

Secventa

Documentul prezintă noțiunea de secvență impar-încadrată a unui șir de numere naturale și cere determinarea secvențelor de lungime maximă dintr-un fișier de numere separate prin spațiu.

Încărcat de

Sonia Manjina
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

Secventa

Numim secvență impar-încadrată a unui șir de numere naturale un subșir al acestuia,


format din termeni aflați pe poziții consecutive în șirul dat, subșir care începe și se
termină cu aceeași valoare, impară. Lungimea secvenței este egală cu numărul de
termeni ai acesteia.
Fișierul aaa.txt conține un șir de cel puțin două și cel mult 106 numere naturale din
intervalul [0, 9]. Numerele sunt separate prin câte un spațiu, iar în șir există cel puțin doi
termeni impari egali.
Se cere să se determine secvențele impar-încadrate din acest șir care au lungime
maximă și să se afișeze pe prima linie a ecranului lungimea maximă determinată, iar pe
următoarea linie, pentru fiecare astfel de secvenţă, valoarea primului său termen.
Numerele de pe a doua linie sunt afişate în ordine strict crescătoare, separate prin câte
un spaţiu.
Proiectați un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fişierul aaa.txt conţine numerele
123456689153
atunci pe ecran se afișează valorile:
10
1 3
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("a.in");
int p[5],u[5];
int main()
{int nr=0,x;
while(f>>x)
{nr++;

if(x%2==0)
{if(p[x/2]==0)
p[x/2]=nr;
u[x/2]=nr;
}
}
int ma=0;
for(int i=0;i<=4;i++)
if(u[i]!=0)
if(u[i]-p[i]+1>ma)
ma=u[i]-p[i]+1;
cout<<ma<<endl;
for(int i=0;i<=4;i++)
if(u[i]-p[i]+1==ma)
cout<<2*i<<" ";
return 0;
}

S-ar putea să vă placă și