Submission #1170261

#TimeUsernameProblemLanguageResultExecution timeMemory
1170261mnbvcxz123Gift (IZhO18_nicegift)C++20
7 / 100
326 ms69884 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; struct Op{ ll x; vector<int>pos; }; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n, k; cin >> n >> k; vector<ll> A(n); ll sum = 0; for (int i = 0; i < n; i++) { cin >> A[i]; sum += A[i]; } if (sum % k != 0) { cout << -1; return 0; } ll mreq = sum / k; for (int i = 0; i < n; i++) { if (A[i] > mreq) { cout << -1; return 0; } } priority_queue<pair<ll, int>> pq; for (int i = 0; i < n; i++) { if (A[i] > 0) pq.push({A[i], i}); } vector<Op> ops; while (pq.size() >= (size_t)k) { vector<pair<ll, int>> group; for (int i = 0; i < k; i++) { group.push_back(pq.top()); pq.pop(); } ll mn = group[0].first; for (int i = 1; i < k; i++) { mn = min(mn, group[i].first); } Op op; op.x = mn; for (int i = 0; i < k; i++) { op.pos.push_back(group[i].second + 1); group[i].first -= mn; } ops.push_back(move(op)); for (int i = 0; i < k; i++) { if (group[i].first > 0) pq.push(group[i]); } } if (!pq.empty()) { cout << -1; return 0; } cout << ops.size() << "\n"; for (auto &op : ops) { cout << op.x; for (auto &p : op.pos) cout << " " << p; cout << "\n"; } return 0; }
#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...