AlexAvram

dumitras 7.03 pinguini

Mar 7th, 2026
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. ///pinguini imperiali
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6. ifstream fin("bac.txt");
  7.  
  8. bool este_imperial(int nr, int a, int b)
  9. {
  10.     if (nr>=a && nr<=b)
  11.         return 1;
  12.     return 0;
  13. }
  14.  
  15. int main()
  16. {
  17.     int a, b;
  18.     fin>>a>>b;
  19.     if (b<a)
  20.         swap(a, b);
  21.  
  22.     int x; int l=0, l_max=-1;
  23.     int poz_c=0, poz_st, poz_st_m, poz_dr_m;
  24.     while (fin>>x)
  25.     {
  26.         ++poz_c;//indicele numarului din sir("pozitie curenta")
  27.         if (este_imperial(x, a, b))
  28.         {
  29.             if (l==0)//incepe o secventa
  30.                 poz_st=poz_c;//memorez limita din stanga a secventei curente
  31.             ++l;
  32.         }
  33.         else
  34.         {
  35.             if (l>1 && l>=l_max)
  36.             {//daca am o secventa valida si o lungime maximala
  37.                 l_max=l;
  38.                 poz_st_m=poz_st;
  39.                 poz_dr_m=poz_c-1;
  40.                 //memorez limitele din stanga si din dreapta ale secventei maximale
  41.             }
  42.             l=0;
  43.         }
  44.     }
  45.     if (este_imperial(x, a, b) && l>1 && l>=l_max)
  46.     {//daca mi s-a terminat fisierul de intrare cat timp inca eram pe o secventa valida si maximala
  47.         l_max=l;
  48.         poz_st_m=poz_st;
  49.         poz_dr_m=poz_c;
  50.     }
  51.  
  52.     if (l_max>1)
  53.         cout<<poz_st_m<<' '<<poz_dr_m<<'\n';
  54.     else
  55.         cout<<-1;//daca nu am nici o secventa valida
  56.  
  57.     return 0;
  58. }
  59. /*
  60. mi-a iesit un cod mult mai frumos de cat in laborator
  61. pentru ca am lucrat doar cu un 'x' pentru citirea din fisier,
  62. in loc de o 'st' si o 'dr' pe care le tot suprascriam;
  63.  
  64. lucrand cu stanga si dreapta evitam sa numesc secventele de l=1
  65. valide, ceea ce e incorect, numai ca complicam mult codu; asa ca
  66. am lucrat cu o citire simpla cu 'x' si mi-am rezolvat simplu problema
  67. lungimilor cu un if (l>1);
  68. */
  69.  
Advertisement
Add Comment
Please, Sign In to add comment