# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
133826 | 2019-07-21T13:30:36 Z | Kastanda | Gift (IZhO18_nicegift) | C++11 | 2000 ms | 285352 KB |
// ItnoE #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1000006; int n, k; ll SM, A[N]; vector < ll > R; priority_queue < pair < ll , int > > Pq; int main() { scanf("%d%d", &n, &k); for (int i = 1; i <= n; i ++) { scanf("%lld", &A[i]); Pq.push({A[i], i}); SM += A[i]; } if (SM % k || Pq.top().first > SM / k) return !printf("-1\n"); SM /= k; while (Pq.top().first) { vector < int > vec; for (int i = 0; i < k; i ++) vec.push_back(Pq.top().second), Pq.pop(); ll Mx = Pq.size() ? Pq.top().first : 0LL; ll X = min(A[vec.back()], SM - Mx * k); R.push_back(X); SM -= X; for (int i = 0; i < k; i ++) A[vec[i]] -= X, Pq.push({A[vec[i]], vec[i]}), R.push_back(vec[i]); } printf("%d\n", (int)R.size() / (k + 1)); for (int i = 0; i < (int)R.size(); i ++) { printf("%lld ", R[i]); if ((i + 1) % (k + 1) == 0) printf("\n"); } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 2089 ms | 285352 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 2089 ms | 285352 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 2089 ms | 285352 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 2053 ms | 155716 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 2089 ms | 285352 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |