이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
#define N 50
#define M 10000
int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }
int aa[N], n, l;
int tt[M], ii[M], cnt;
void balance() {
int i, a, k;
a = 0;
for (i = 0; i < n; i++)
a = max(a, aa[i]);
for (i = 0; i < n; i++)
if (a - aa[i] >= l) {
k = (a - aa[i]) / l;
aa[i] += l * k;
while (k--)
tt[cnt] = 1, ii[cnt] = i, cnt++;
}
}
int main() {
int h, i, j, r, d, a, k;
scanf("%d%d", &n, &l);
for (i = 0; i < n; i++)
scanf("%d", &aa[i]);
balance();
for (r = 1; r < l; r++)
for (i = r; i + l <= n; i += l)
if (aa[i] != aa[i - 1]) {
d = ((aa[i - 1] - aa[i]) % l + l) % l;
a = 0;
for (j = i; j < i + l; j++)
a = max(a, aa[j]);
for (j = 0; j < n; j++)
if ((j < i || j >= i + l) && aa[j] < a + d) {
k = (a + d - aa[j] + l - 1) / l;
aa[j] += k * l;
while (k--)
tt[cnt] = 1, ii[cnt] = j, cnt++;
}
for (j = i; j < i + l; j++)
aa[j] += d;
while (d--)
tt[cnt] = 2, ii[cnt] = i, cnt++;
balance();
}
for (i = (n / l - 1) * l; i >= 0; i -= l)
if (i + l < n && aa[i + l - 1] != aa[i + l]) {
d = ((aa[i + l] - aa[i + l - 1]) % l + l) % l;
a = 0;
for (j = i; j < i + l; j++)
a = max(a, aa[j]);
for (j = 0; j < n; j++)
if ((j < i || j >= i + l) && aa[j] < a + d) {
k = (a + d - aa[j] + l - 1) / l;
aa[j] += k * l;
while (k--)
tt[cnt] = 1, ii[cnt] = j, cnt++;
}
for (j = i; j < i + l; j++)
aa[j] += d;
while (d--)
tt[cnt] = 2, ii[cnt] = i, cnt++;
balance();
}
for (i = 1; i < n; i++)
if (aa[i] != aa[i - 1]) {
printf("-1\n");
return 0;
}
printf("%d\n", cnt);
for (h = 0; h < cnt; h++)
printf("%d %d\n", tt[h], ii[h] + 1);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
joiris.c: In function 'main':
joiris.c:30:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
30 | scanf("%d%d", &n, &l);
| ^~~~~~~~~~~~~~~~~~~~~
joiris.c:32:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
32 | scanf("%d", &aa[i]);
| ^~~~~~~~~~~~~~~~~~~
# | 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... |