# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
721031 | 2023-04-10T08:24:59 Z | cig32 | Gift (IZhO18_nicegift) | C++17 | 2000 ms | 152868 KB |
#include "bits/stdc++.h" #define int long long using namespace std; const int MAXN = 1e5 + 10; void solve(int tc) { int n, k; cin >> n >> k; priority_queue<pair<int,int> > pq; multiset<int> ms; int a[n+1]; for(int i=1; i<=n; i++) { cin >> a[i]; pq.push({a[i], i}); ms.insert(a[i]); } if(k == n) { for(int i=1; i<n; i++){ if(a[i] != a[i+1]) { cout << "-1\n"; return; } } cout << "1\n"; cout << a[1]; for(int i=1; i<=n; i++) cout << " " << i; cout << '\n'; return; } int lim = 3000000 / k; vector<vector<int> > ops; while(lim--) { while(pq.size() && pq.top().first == 0) pq.pop(); if(pq.empty()) break; if(pq.size() < k) { cout << "-1\n"; return; } int mn = 1e18; stack<pair<int, int> > st; vector<int> lol; for(int i=0; i<k; i++) { st.push(pq.top()); mn = min(mn, pq.top().first); lol.push_back(pq.top().second); pq.pop(); } int cmp = 0; if(ms.size()) cmp = *ms.begin(); mn = max(1ll, mn - cmp); while(st.size()) { if(st.top().first != mn) { pq.push({st.top().first - mn, st.top().second}); } st.pop(); } for(int x: lol) { ms.erase(ms.lower_bound(a[x])); a[x] -= mn; ms.insert(a[x]); } lol.push_back(mn); ops.push_back(lol); } for(int i=1; i<=n; i++) { if(a[i] != 0) { cout << "-1\n"; return; } } cout << ops.size() << "\n"; for(vector<int> v: ops) { cout << v.back(); for(int i=0; i<k; i++) cout << " " << v[i]; cout << "\n"; } } int32_t main() { ios::sync_with_stdio(0); cin.tie(0); int t=1; //cin>>t; for(int i=1; i<=t; i++)solve(i); } /* 5 2 1 2 4 8 15 3 2 1 2 3 5 3 6 6 4 2 0 4 2 2 3 3 2 */
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | n=4 |
2 | Correct | 1 ms | 212 KB | n=3 |
3 | Correct | 0 ms | 212 KB | n=3 |
4 | Correct | 0 ms | 212 KB | n=4 |
5 | Correct | 0 ms | 212 KB | n=4 |
6 | Correct | 0 ms | 212 KB | n=2 |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | n=4 |
2 | Correct | 1 ms | 212 KB | n=3 |
3 | Correct | 0 ms | 212 KB | n=3 |
4 | Correct | 0 ms | 212 KB | n=4 |
5 | Correct | 0 ms | 212 KB | n=4 |
6 | Correct | 0 ms | 212 KB | n=2 |
7 | Correct | 0 ms | 212 KB | n=5 |
8 | Correct | 1 ms | 212 KB | n=8 |
9 | Correct | 1 ms | 212 KB | n=14 |
10 | Incorrect | 0 ms | 212 KB | Jury has the answer but participant has not |
11 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | n=4 |
2 | Correct | 1 ms | 212 KB | n=3 |
3 | Correct | 0 ms | 212 KB | n=3 |
4 | Correct | 0 ms | 212 KB | n=4 |
5 | Correct | 0 ms | 212 KB | n=4 |
6 | Correct | 0 ms | 212 KB | n=2 |
7 | Correct | 0 ms | 212 KB | n=5 |
8 | Correct | 1 ms | 212 KB | n=8 |
9 | Correct | 1 ms | 212 KB | n=14 |
10 | Incorrect | 0 ms | 212 KB | Jury has the answer but participant has not |
11 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 2083 ms | 152868 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | n=4 |
2 | Correct | 1 ms | 212 KB | n=3 |
3 | Correct | 0 ms | 212 KB | n=3 |
4 | Correct | 0 ms | 212 KB | n=4 |
5 | Correct | 0 ms | 212 KB | n=4 |
6 | Correct | 0 ms | 212 KB | n=2 |
7 | Correct | 0 ms | 212 KB | n=5 |
8 | Correct | 1 ms | 212 KB | n=8 |
9 | Correct | 1 ms | 212 KB | n=14 |
10 | Incorrect | 0 ms | 212 KB | Jury has the answer but participant has not |
11 | Halted | 0 ms | 0 KB | - |