# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
284727 | anonymous | JOIRIS (JOI16_joiris) | C++14 | 1 ms | 256 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 <iostream>
#include <cassert>
#define MAXN 55
using namespace std;
int N, K, A[MAXN], Sum[MAXN]; //4N^2 operations
int Q, Ops[MAXN * MAXN * 4][2];
void hor(int x) {
for (int i=x; i<x+K; i++) {
A[i] += 1;
}
Ops[Q][0] = 2, Ops[Q][1] = x;
Q++;
}
void vert(int x) {
A[x] += K;
Ops[Q][0] = 1, Ops[Q][1] = x;
Q++;
}
void op1(int x) {
while (true) {
int maxh = 0;
for (int i=x; i<x+K; i++) {
maxh = max(maxh, A[i]);
}
bool good = true;
for (int i=1; i<=N; i++) {
if ((i < x || i >= x+K) && A[i] <= maxh) {
vert(i);
good = false;
}
}
if (good) {
hor(x);
return;
}
}
}
void finish() {
int minh = 1<<30;
for (int i=1; i<=N; i++) {
minh = min(minh, A[i]);
}
for (int i=1; i<=N; i++) {
A[i] -= minh;
}
int maxh = 0;
for (int i=1; i<=N; i++) {
assert(A[i]%K == 0);
maxh = max(maxh, A[i]);
}
for (int i=1; i<=N; i++) {
for (int j=1; j <= (maxh-A[i])/K; j++) {
vert(i);
}
}
}
int main() {
//freopen("joirisin.txt","r",stdin);
scanf("%d %d",&N,&K);
for (int i=1; i<=N; i++) {
scanf("%d",&A[i]);
}
for (int i=1; i<=N+1; i++) {
Sum[(i+K-1)%K] = (Sum[(i+K-1)%K] + A[i]-A[i-1] + K ) % K;
}
for (int i=1; i<K; i++) {
if (Sum[i]) {
printf("-1");
return(0);
}
}
for (int i=N; i>=K; i--) {
while ((A[i+1]-A[i])%K) {op1(i-K+1);}
}
finish();
printf("%d\n",Q);
for (int i=0; i<Q; i++) {
printf("%d %d\n",Ops[i][0], Ops[i][1]);
}
}
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... |