Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <algorithm>
- #define INF 1000000001
- using namespace std;
- int F[10],MIN[10]={INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},a[10001],N;
- void cifre_unice(int n) /// Retine cifrele unice din numarul n
- {
- int c[10]={0,0,0,0,0,0,0,0,0,0};
- int cn=n; /// Pastrez o copie a lui n
- while(n>9)
- c[n%10]=1,n/=10; /// Memorez o singura data fiecare cifra a numarului
- ++F[n]; /// Il adaug la grup
- c[n]=1; /// Memorez si prima cifra a numarului
- ++F[n]; /// Numar numerele din grupa n (primul criteriu)
- if(cn<MIN[n]) /// Daca numarul citit e mai mic din grupul respectiv, il retin
- MIN[n]=cn;
- n=0;
- for(int i=9;i>=0;--i) /// Formez numarul format cu cifrele lui n in ordine descrescatoare
- if(c[i])
- n=n*10+i;
- a[N++]=n; /// Memoreaza numarul format cu cifrele unice
- }
- int main()
- {
- int n,c;
- ifstream f("grup.in");
- f>>n>>c;
- int x;
- for(int i=0;i<n;++i)
- f>>x,cifre_unice(x);
- ofstream g("grup.out");
- if(c==1)
- {
- int numeros=0,MINIM=INF;
- for(int i=1;i<=9;++i)
- if(MIN[i]!=INF&&F[i]>numeros)
- numeros=F[i],MINIM=MIN[i];
- g<<MINIM;
- }
- else
- {
- sort(a,a+N); /// Sortez crescator sirul de numere formate cu cifrele unice
- int L=1,Lmax=0;
- for(int i=1;i<N;++i) /// Calculez lungimea maxima a secventei de numere egale
- if(a[i]==a[i-1])
- ++L;
- else
- {
- if(L>Lmax)
- Lmax=L;
- L=1;
- }
- if(L>Lmax)
- Lmax=L;
- g<<Lmax;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement