1. 程式人生 > >codeforces723----C. Polycarp at the Radio

codeforces723----C. Polycarp at the Radio

ces clu cout esp out return ostream break --

 1 //AC代碼。。。表示很暈
 2 #include <iostream>
 3 using namespace std;
 4 int a[2005],b[2005];
 5 int main()
 6 {
 7     int n,m,cnt;
 8     cin >> n >> m;
 9     int t = n/m;
10     int t2 = n%m;
11     if(n%m == 0) cnt = t;
12     else cnt = t+1;
13     for(int i=0; i<n; ++i)
14     {
15         cin >> a[i];
16 if(a[i] <= m) ++b[a[i]]; 17 if(a[i] <= m && t2 > 0 && b[a[i]] == cnt) --t2; 18 } 19 int f = 1; 20 int ans = 0; 21 if(t2 == 0) cnt = t; 22 //cout << cnt << endl; 23 for(int i=0; i<n; ++i) 24 { 25 if(a[i] > m ||(a[i] <=m && b[a[i]] > cnt))
26 { 27 while(f <= m) 28 { 29 //cout <<"test" << f << " " << cnt << endl; 30 if(b[f] < t) break; 31 ++f; 32 } 33 if(f <= m) 34 { 35 ++ans;
36 if(a[i] <= m) 37 --b[a[i]]; 38 a[i] = f; 39 ++b[f]; 40 //cout <<t2 << "bf " << b[f] <<" " << cnt << endl; 41 if(t2 > 0 && b[f] == cnt ) 42 if((--t2) == 0) cnt = t; 43 if(a[i] <= m && t2 > 0 && b[a[i]] == cnt) 44 if((--t2) == 0) cnt = t; 45 } 46 } 47 } 48 cout << t << " " << ans << endl; 49 for(int i=0; i<n; ++i) 50 if(i == 0) 51 cout << a[i]; 52 else 53 cout << " " << a[i]; 54 cout << endl; 55 return 0; 56 }

codeforces723----C. Polycarp at the Radio