Submission #99769

#TimeUsernameProblemLanguageResultExecution timeMemory
99769choikiwonGift (IZhO18_nicegift)C++17
100 / 100
1240 ms94532 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int MN = 1000010; int N, K; priority_queue<pair<ll, int> > pq; vector<vector<int> > S; vector<ll> X; int main() { std::ios::sync_with_stdio(false); cin >> N >> K; //N = 1000, K = 20; ll sum = 0; for(int i = 0; i < N; i++) { ll t; cin >> t; //ll t = 100; pq.push({t, i}); sum += t; } if(sum % K) { cout << -1; return 0; } while(!pq.empty()) { vector<pair<ll, int> > V; for(int i = 0; i < K; i++) { if(pq.empty()) { printf("-1"); return 0; } V.push_back(pq.top()); sum -= pq.top().first; pq.pop(); } if(pq.empty() || V.back().first < V[0].first - pq.top().first) { X.push_back(V.back().first); S.push_back(vector<int>()); for(int i = 0; i < K; i++) { S.back().push_back(V[i].second); V[i].first -= X.back(); } } else { ll d = max(0LL, (pq.top().first * K - sum + K - 1) / K); ll t = V[0].first - pq.top().first; //cout << d << ' ' << t << endl; X.push_back(max(t, V.back().first - d)); S.push_back(vector<int>()); for(int i = 0; i < K; i++) { S.back().push_back(V[i].second); V[i].first -= X.back(); } } for(int i = 0; i < K; i++) { if(V[i].first) { pq.push(V[i]); sum += V[i].first; } } } cout << X.size() << '\n'; for(int i = 0; i < X.size(); i++) { cout << X[i] << ' '; for(int j = 0; j < S[i].size(); j++) { cout << S[i][j] + 1 << ' '; } cout << '\n'; } }

Compilation message (stderr)

nicegift.cpp: In function 'int main()':
nicegift.cpp:76:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < X.size(); i++) {
                    ~~^~~~~~~~~~
nicegift.cpp:79:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j = 0; j < S[i].size(); j++) {
                        ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...