# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
65181 | kingpig9 | Gift (IZhO18_nicegift) | C++11 | 2051 ms | 52148 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;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int MAXN = 2e6 + 10;
#define debug(...) fprintf(stderr, __VA_ARGS__)
#define all(v) (v).begin(), (v).end()
#define fi first
#define se second
#define fillchar(a, s) memset((a), (s), sizeof(a))
void kill() {
puts("-1");
exit(0);
}
int N, K;
ll A[MAXN], suma;
namespace subtask3 {
void go() {
printf("%lld\n", suma / K);
priority_queue<pll> pq;
for (int i = 0; i < N; i++) {
pq.push(pll(A[i], i));
}
while (!pq.empty()) {
vector<pll> vnew;
printf("1");
for (int i = 0; i < K; i++) {
pll p = pq.top();
pq.pop();
if (--p.fi) {
vnew.push_back(p);
}
printf(" %lld", p.se + 1);
}
puts("");
for (pll p : vnew) {
pq.push(p);
}
}
}
}
namespace subtask4 {
void go() {
ll g = __gcd(N, K);
ll v = A[0] * g / K;
ll nturns = N / g;
printf("%lld\n", nturns);
int ptr = 0;
for (ll i = 0; i < nturns; i++) {
printf("%lld", v);
for (int j = 0; j < K; j++) {
printf(" %d", ptr + 1);
ptr = (ptr + 1) % N;
}
puts("");
}
}
}
int main() {
scanf("%d %d", &N, &K);
for (int i = 0; i < N; i++) {
scanf("%lld", &A[i]);
suma += A[i];
}
if (suma % K != 0) {
kill();
}
if (suma <= 1e5) {
subtask3::go();
} else {
subtask4::go();
}
}
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... |