# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
99769 | choikiwon | Gift (IZhO18_nicegift) | C++17 | 1240 ms | 94532 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |