Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("culori.in");
- ofstream fout("culori.out");
- int C,N,M;
- int nr1[505],nr2[505],nrmax[501];
- int compar(int x[],int y[])
- {
- if(x[0]!=y[0])
- return (x[0]<y[0]?-1:1);
- int i=1;
- while(x[i]==y[i]&&i<=x[0])
- ++i;
- if(i>x[0])
- return 0;
- if(x[i]<y[i])
- return -1;
- return 1;
- }
- int main()
- {
- fin>>C>>N;
- if(C==1)
- {
- int L,M,Lmax=0,Kmax=1; /// Presupun ca primul rand citit corespunde cerintei
- for(int i=1;i<=N;++i) /// Pentru cele N randuri
- {
- fin>>M; /// Citesc numarul de patratele colorate pentru randul i
- L=M; /// Memorez lungimea randului
- int c1,c2; /// Culori alaturate
- fin>>c1; /// Citesc prima culoare
- for(int j=2;j<=M;++j) /// Incepand cu a 2-a culoare citesc toate culorile de pe randul i
- {
- fin>>c2; /// Citesc urmatoarea culoare
- if(c1!=c2) /// Daca e diferita, atunci trec la urmatorul patratel
- c1=c2; /// si c2 va fi culoarea anterioara (c1)
- else /// altfel, randul nu corespunde
- L=0; /// si fac lungimea 0 ca sa nu iau randul in calcul (dar trebuie sa citesc restul valorilor
- }
- if(L>=Lmax) /// Am gasit un rand de lungime mai mare cu culori alaturate diferite
- {
- if(L==Lmax) /// Daca am gasit inca un rand de aceeasi lungime care corespunde cerintei
- ++Kmax; /// marim Kmax
- if(L>Lmax) /// Daca am gasit un rand de lungime ,mai mare ce corespunde cerintei
- Lmax=L,Kmax=1; /// Memoram noua lungime si initializam Kmax
- }
- }
- fout<<Lmax<<' '<<Kmax<<'\n';
- return 0;
- }
- fin>>nr1[0];
- nrmax[0]=nr1[0];
- for(int j=1;j<=nr1[0];++j)
- fin>>nr1[j],nrmax[j]=nr1[j];
- for(int i=2;i<=N;++i)
- {
- fin>>nr2[0];
- for(int j=1;j<=nr2[0];++j)
- fin>>nr2[j];
- int ok=compar(nrmax,nr2);
- if(ok<0)
- {
- nrmax[0]=nr2[0];
- for(int j=1;j<=nrmax[0];++j)
- nrmax[j]=nr2[j];
- }
- }
- for(int i=1;i<=nrmax[0];++i)
- fout<<nrmax[i];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement