# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
284996 | anonymous | JOIRIS (JOI16_joiris) | C++14 | 1 ms | 384 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>
#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() {
while (true) {
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;
}
bool okay = true;
for (int i=1; i<=N; i++) {
if (A[i]) {
okay = false;
break;
}
}
if (!okay) {
for (int i=1; i<=N; i++) {
if (!A[i]) {
vert(i);
}
}
} else {
return;
}
}
}
int main() {
//freopen("joirisin.txt","r",stdin);
//freopen("joirisout.txt","w",stdout);
scanf("%d %d",&N,&K);
for (int i=1; i<=N; i++) {
scanf("%d",&A[i]);
}
for (int i=1; i<N; i++) {
Sum[i%K] = (Sum[i%K] + A[i+1] - A[i] + K) % K;
}
while (N > K && Sum[N%K]) {
op1(N-K+1), Sum[N%K]=(Sum[N%K]+1)%K;
}
while (N > K && Sum[0]) {
op1(1), Sum[0]=(Sum[0]+K-1)%K;
}
for (int i=-0; i<K; i++) {
if (Sum[i]) {
printf("-1\n");
return(0);
}
}
for (int i=N-1; 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... |