#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int nn; cin >> nn; int const n = nn;
int z[n];
for(int i=0; i<n; i++) //przyjmowanie i sortowanie danych
{
cin >> z[i];
}
sort(z, z + n);
int zdo=0, l=0, ol, pl; //zdo- znaczki do oddania, ol - obecna liczba, pl - potencjalna liczba
for(int o=1; o<=n; o++) // przechodzenie przez osoby
{
if(o==1)
{
cout << n << ' ';
continue;
}
else
{
zdo=0;
for(int i=0; i<n; i++) // przez znaczki
{
int c = i+1; l=1; ol=z[i]; pl=z[c];
while(pl==ol)
{
l++;
c++;
pl=z[c];
}
if(l>=o)
{
if(l%o==0)
zdo = zdo + l;
else
zdo = zdo + (l-(l%o));
}
if(l>1)
i= i+l-1;
}
}
cout << zdo;
if(o!=n)
cout << ' ';
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <iostream> #include<algorithm> using namespace std; int main() { int nn; cin >> nn; int const n = nn; int z[n]; for(int i=0; i<n; i++) //przyjmowanie i sortowanie danych { cin >> z[i]; } sort(z, z + n); int zdo=0, l=0, ol, pl; //zdo- znaczki do oddania, ol - obecna liczba, pl - potencjalna liczba for(int o=1; o<=n; o++) // przechodzenie przez osoby { if(o==1) { cout << n << ' '; continue; } else { zdo=0; for(int i=0; i<n; i++) // przez znaczki { int c = i+1; l=1; ol=z[i]; pl=z[c]; while(pl==ol) { l++; c++; pl=z[c]; } if(l>=o) { if(l%o==0) zdo = zdo + l; else zdo = zdo + (l-(l%o)); } if(l>1) i= i+l-1; } } cout << zdo; if(o!=n) cout << ' '; } return 0; } |
English