Informatică, întrebare adresată de dani2kn, 9 ani în urmă

Problema PBInfo #1875 platou1

Cerința
Se consideră un șir de cifre. Să se determine lungimea maximală a unei secvențe din șir formată din cifre egale.

Date de intrare
Fișierul de intrare platou1.in conține pe prima linie cifrele reprezentând termenii șirului, separate prin câte un spațiu.

Date de ieșire
Fișierul de ieșire platou1.out va conține pe prima linie două numere naturale k x, separate printr-un singur spațiu, k reprezentând lungimea secvenței determinate, iar x reprezentând termenul șirului din care este formată secvența.

Restricții și precizări
fișierul de intrare conține cel mult 1.000 de cifre, separate prin câte un spațiu, reprezentând termenii șirului dat;
dacă șirul conține mai multe secvențe cu lungimea maximală, se va afișa cel mai mic termen ce formează o astfel de secvență.

Exemplu
platou1.in

3 8 8 8 8 9 9 9 2 5 5 5 5 7 6 6 6 6 8 8
platou1.out

4 5
Explicație
În fișierul de intrare sunt 3 secvențe cu lungimea maximă k=4, termenul cel mai mic fiind x=5.

***I-am dat de cap! Rezolvarea de 100p este: 

#include <iostream>
#include <fstream>

using namespace std;

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

int main()

   int xmin=10, k=0,lg=1,x,y;

    fin>>x; //container pentru numerele de comparat

    while(fin>>y) 
  if(x==y)// in cazul in care cei doi termeni sunt egali 
       lg++; //contorul inregistreaza frecventa numarului 
   else    {   //daca cei doi termeni nu sunt egali 
       if(k<lg)   
     {
            k=lg; //inregistrarea valorii celei mai mari a frecventei termenului            xmin=x; //inregistrarea valorii termenului din secventa       

       else 
           if(k==lg && xmin>x)   
                 xmin=x;
        lg=1; //resetarea contorului
        x=y; //inregistrarea noului termen de comparat
    }

    fout<<k<<" "<<xmin<<endl;

    fin.close();
    fout.close();
    return 0;
}


pebly: problema este deja rezolvata.. si nu are 100 de puncte
dani2kn: #include <iostream>
#include <fstream>

using namespace std;

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

int main()
{
int xmin=10, k=0,lg=1,x,y;
fin>>x;

while(fin>>y)
if(x==y)
lg++;
else
{
if(k<lg)
{
k=lg;
xmin=x;
}
else
if(k==lg && xmin>x)
xmin=x;

lg=1;
x=y;
}

fout<<k<<" "<<xmin<<endl;

fin.close();
fout.close();

return 0;
}
dani2kn: pune-o pe asta fără comentarii, cea postată de mine initial am văzut că nu primeste 100 de puncte, nu știu de ce....

Răspunsuri la întrebare

Răspuns de pebly
9
#include <iostream>
#include <fstream>

using namespace std;

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

int main()
{
int xmin=10, k=0,lg=1,x,y;
fin>>x; 

while(fin>>y)
if(x==y)
lg++; 
else

if(k<lg)
{
k=lg; 
xmin=x; 
}
else
if(k==lg && xmin>x)
xmin=x;

lg=1; 
x=y; 
}

fout<<k<<" "<<xmin<<endl;

fin.close();
fout.close();

return 0;
}
Alte întrebări interesante