ABCDF解いたと思ったらしょうもないミスでFを落とした。
http://codeforces.com/contest/581/problem/C
問題
プレイヤーは全部でN個のスキルを持ち、各能力値はA[i]である。
各能力値は0~100の値を持ち、その値を10で割って小数点以下を切り捨てた値の総和がプレイヤーのレートとなる。
プレイヤーは各スキルの能力値を合計Kだけ上昇できるとき、最大レートはどこまで上がるか。
解法
当然低い能力上昇値でレートを1上げられるなら、そちらを先に上げるのが良い。
よって(10-A[i]%10)の小さい順にそれぞれレートが1上昇するまで能力を上げていく。
あとはそれぞれ最大値100を超えない範囲で10ずつ上げていけば良い。
int N,K; int A[101010]; ll sum; int num[10]; vector<int> V; void solve() { int i,j,k,l,r,x,y; string s; cin>>N>>K; int left=0; FOR(i,N) { cin>>A[i]; sum += A[i]/10; if(A[i]%10) V.push_back(10-A[i]%10); left+=10-(A[i]+9)/10; } sort(ALL(V)); FORR(r,V) { if(K>=r) { sum++; K-=r; } } sum += min(left,K/10); cout<<sum<<endl; }
まとめ
意外とsystestで落ちてる人がいた。