Advertisement
a53

grup

a53
Jan 28th, 2018
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. #include <fstream>
  2. #include <algorithm>
  3. #define INF 1000000001
  4. using namespace std;
  5. int F[10],MIN[10]={INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},a[10001],N;
  6.  
  7. void cifre_unice(int n) /// Retine cifrele unice din numarul n
  8. {
  9. int c[10]={0,0,0,0,0,0,0,0,0,0};
  10. int cn=n; /// Pastrez o copie a lui n
  11. while(n>9)
  12. c[n%10]=1,n/=10; /// Memorez o singura data fiecare cifra a numarului
  13. ++F[n]; /// Il adaug la grup
  14. c[n]=1; /// Memorez si prima cifra a numarului
  15. ++F[n]; /// Numar numerele din grupa n (primul criteriu)
  16. if(cn<MIN[n]) /// Daca numarul citit e mai mic din grupul respectiv, il retin
  17. MIN[n]=cn;
  18. n=0;
  19. for(int i=9;i>=0;--i) /// Formez numarul format cu cifrele lui n in ordine descrescatoare
  20. if(c[i])
  21. n=n*10+i;
  22. a[N++]=n; /// Memoreaza numarul format cu cifrele unice
  23. }
  24.  
  25. int main()
  26. {
  27. int n,c;
  28. ifstream f("grup.in");
  29. f>>n>>c;
  30. int x;
  31. for(int i=0;i<n;++i)
  32. f>>x,cifre_unice(x);
  33. ofstream g("grup.out");
  34. if(c==1)
  35. {
  36. int numeros=0,MINIM=INF;
  37. for(int i=1;i<=9;++i)
  38. if(MIN[i]!=INF&&F[i]>numeros)
  39. numeros=F[i],MINIM=MIN[i];
  40. g<<MINIM;
  41. }
  42. else
  43. {
  44. sort(a,a+N); /// Sortez crescator sirul de numere formate cu cifrele unice
  45. int L=1,Lmax=0;
  46. for(int i=1;i<N;++i) /// Calculez lungimea maxima a secventei de numere egale
  47. if(a[i]==a[i-1])
  48. ++L;
  49. else
  50. {
  51. if(L>Lmax)
  52. Lmax=L;
  53. L=1;
  54. }
  55. if(L>Lmax)
  56. Lmax=L;
  57. g<<Lmax;
  58. }
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement