Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///pinguini imperiali
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream fin("bac.txt");
- bool este_imperial(int nr, int a, int b)
- {
- if (nr>=a && nr<=b)
- return 1;
- return 0;
- }
- int main()
- {
- int a, b;
- fin>>a>>b;
- if (b<a)
- swap(a, b);
- int x; int l=0, l_max=-1;
- int poz_c=0, poz_st, poz_st_m, poz_dr_m;
- while (fin>>x)
- {
- ++poz_c;//indicele numarului din sir("pozitie curenta")
- if (este_imperial(x, a, b))
- {
- if (l==0)//incepe o secventa
- poz_st=poz_c;//memorez limita din stanga a secventei curente
- ++l;
- }
- else
- {
- if (l>1 && l>=l_max)
- {//daca am o secventa valida si o lungime maximala
- l_max=l;
- poz_st_m=poz_st;
- poz_dr_m=poz_c-1;
- //memorez limitele din stanga si din dreapta ale secventei maximale
- }
- l=0;
- }
- }
- if (este_imperial(x, a, b) && l>1 && l>=l_max)
- {//daca mi s-a terminat fisierul de intrare cat timp inca eram pe o secventa valida si maximala
- l_max=l;
- poz_st_m=poz_st;
- poz_dr_m=poz_c;
- }
- if (l_max>1)
- cout<<poz_st_m<<' '<<poz_dr_m<<'\n';
- else
- cout<<-1;//daca nu am nici o secventa valida
- return 0;
- }
- /*
- mi-a iesit un cod mult mai frumos de cat in laborator
- pentru ca am lucrat doar cu un 'x' pentru citirea din fisier,
- in loc de o 'st' si o 'dr' pe care le tot suprascriam;
- lucrand cu stanga si dreapta evitam sa numesc secventele de l=1
- valide, ceea ce e incorect, numai ca complicam mult codu; asa ca
- am lucrat cu o citire simpla cu 'x' si mi-am rezolvat simplu problema
- lungimilor cu un if (l>1);
- */
Advertisement
Add Comment
Please, Sign In to add comment