Submission #1937298
Source Code Expand
/*
cat <<EOF >mistaken-paste
*/
#pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <math.h>
#define BIG 2000000007
#define VERYBIG 200000000000007LL
#define MOD 1000000007
typedef uint64_t ull;
typedef int64_t sll;
#define N_MAX 1000
#define M_MAX 100
typedef struct {
int32_t a;
int32_t b;
} hw;
typedef struct {
sll a;
sll b;
} hwll;
typedef struct {
hwll a;
hwll b;
} linell;
typedef struct {
ull s;
ull t;
int32_t c;
} struct_a;
typedef struct {
int32_t from;
int32_t to;
sll cost;
} struct_b;
const hw vector8[8] = {
{-1, -1},
{-1, 0},
{-1, +1},
{ 0, -1},
{ 0, +1},
{+1, -1},
{+1, 0},
{+1, +1}
};
ull n, m;
ull h, w;
ull k;
ull vua, vub, vuc, vud, vue, vuf;
sll vsa, vsb, vsc, vsd, vse, vsf;
long double vra, vrb, vrc;
double vda, vdb, vdc;
size_t slen;
size_t tlen;
// ull a[N_MAX];
// ull a[M_MAX];
sll a[N_MAX];
// ull a[N_MAX][N_MAX];
// ull wall[N_MAX][N_MAX];
double wall[N_MAX][N_MAX];
// ull b[N_MAX];
// ull b[M_MAX];
sll b[N_MAX];
// ull b[N_MAX][N_MAX];
// sll b[N_MAX][N_MAX];
// ull c[N_MAX];
// ull c[M_MAX];
sll c[N_MAX];
// char s[N_MAX + 1];
// char t[N_MAX + 1];
// char s[N_MAX][M_MAX + 1];
ull alphabets[26];
// ull dp[N_MAX];
// sll dp[N_MAX];
// bool dp[N_MAX];
// int32_t dp[N_MAX];
ull dp[N_MAX * N_MAX];
// double dp[N_MAX];
// double dp[N_MAX][70][40][30];
// ull dq[N_MAX];
// ull dp[N_MAX + 1][M_MAX + 1];
// ull dq[M_MAX][N_MAX];
// bool dq[N_MAX];
// double dq[N_MAX];
// hwll dp[N_MAX + 1][N_MAX + 1];
// struct_a dp[N_MAX + 1][N_MAX + 1];
// sll imos[N_MAX + 5];
// hw arr[N_MAX];
hwll arr[N_MAX * 2];
// hw brr[M_MAX];
// linell arr[N_MAX][N_MAX];
// ull bitdp[1 << 8];
// ull digitdp[1001][ 3][ 2];
// pos less carry
// ull digitdp[1001][ 2];
// pos carry
// struct_a arr[N_MAX * 2];
// struct_b brr[N_MAX * 2];
void swap_adj (ull *a, ull *b) {
if (*a != *b) {
ull tmp = *b;
*b = *a;
*a = tmp;
}
return;
}
ull divide (ull a, ull b) {
ull x = MOD - 2;
ull ans = 1;
while (x) {
if (x & 1) ans = (ans * b) % MOD;
b = (b * b) % MOD;
x /= 2;
}
return (a * ans) % MOD;
}
int32_t digits (ull x) {
int32_t i = 1;
while (x >= 10) {
x /= 10;
i++;
}
return i;
}
ull umin (ull x, ull y) {
return (x < y) ? x : y;
}
ull umax (ull x, ull y) {
return (x > y) ? x : y;
}
sll smin (sll x, sll y) {
return (x < y) ? x : y;
}
sll smax (sll x, sll y) {
return (x > y) ? x : y;
}
ull gcd (ull x, ull y) {
if (x < y) {
return gcd(y, x);
} else if (y == 0) {
return x;
} else {
return gcd(y, x % y);
}
}
ull bitpow (ull a, ull x, ull modulo) {
ull result = 1;
while (x) {
if (x & 1) {
result *= a;
result %= modulo;
}
x /= 2;
a = (a * a) % modulo;
}
return result;
}
int32_t targetdig (ull x, int32_t index /* 1-indexed */) {
// static...?
int32_t posmax = digits(x);
if (posmax < index) return -1;
while (posmax > index) {
posmax--;
x /= 10;
}
return x % 10;
}
int32_t charcomp (const char left, const char right) {
if (left < right) {
return -1;
} else if (left > right) {
return +1;
} else {
return 0;
}
}
int32_t pcharcomp (const char *left, const char *right) {
return charcomp(*left, *right);
}
int32_t pcharrevcomp (const char *left, const char *right) {
return charcomp(*right, *left);
}
int32_t intcomp (const int32_t left, const int32_t right) {
if (left < right) {
return -1;
} else if (left > right) {
return +1;
} else {
return 0;
}
}
int32_t pintcomp (const int32_t *left, const int32_t *right) {
return intcomp(*left, *right);
}
int32_t ullcomp (const ull left, const ull right) {
if (left < right) {
return -1;
} else if (left > right) {
return +1;
} else {
return 0;
}
}
int32_t pullcomp (const ull *left, const ull *right) {
return ullcomp(*left, *right);
}
int32_t sllcomp (const sll left, const sll right) {
if (left < right) {
return -1;
} else if (left > right) {
return +1;
} else {
return 0;
}
}
int32_t hwllfraccomp (const hwll left, const hwll right) {
return ullcomp(left.a * right.b, left.b * right.a);
}
int32_t psllcomp (const sll *left, const sll *right) {
return sllcomp(*left, *right);
}
int32_t phwAcomp (const hw *left, const hw *right) {
return intcomp(left->a, right->a);
}
int32_t phwBcomp (const hw *left, const hw *right) {
return intcomp(left->b, right->b);
}
int32_t phwABcomp (const hw *left, const hw *right) {
int32_t x = phwAcomp(left, right);
if (x) return x;
return phwBcomp(left, right);
}
int32_t phwllAcomp (const hwll *left, const hwll *right) {
return sllcomp(left->a, right->a);
}
int32_t phwllBcomp (const hwll *left, const hwll *right) {
return sllcomp(left->b, right->b);
}
int32_t phwllABcomp (const hwll *left, const hwll *right) {
int32_t x = phwllAcomp(left, right);
if (x) return x;
return phwllBcomp(left, right);
}
int32_t pstrAcomp (const struct_a *left, const struct_a *right) {
int32_t x;
if (x = ullcomp(left->t, right->t)) return x;
if (x = ullcomp(left->s, right->s)) return x;
if (x = intcomp(left->c, right->c)) return x;
return 0;
}
int32_t bitlet (char c) {
return (1 << (c - 'a'));
}
ull ullabs (ull a, ull b) {
if (a >= b) {
return a - b;
} else {
return b - a;
}
}
sll sllabs (sll a, sll b) {
if (a >= b) {
return a - b;
} else {
return b - a;
}
}
sll nibutanlobo (bool (*func)(sll arg), sll ok, sll ng) {
while (sllabs(ok, ng) > 1) {
sll med = (ok + ng) / 2;
if (func(med)) {
ok = med;
} else {
ng = med;
}
// printf("debug: [%lld %lld)\n", ok, ng);
}
if (!func(ok)) return ok * 2 - ng;
return ok;
}
bool nextroute (int32_t arr[], int32_t n) {
int32_t i = n - 1;
int32_t j, x;
while (i > 0 && arr[i - 1] > arr[i]) i--;
if (i == 0) return false;
x = n;
for (j = i; j < n; j++) {
if (arr[j] < arr[i - 1]) continue;
if (x == n || arr[x] > arr[j]) x = j;
}
arr[i - 1] ^= arr[x];
arr[x] ^= arr[i - 1];
arr[i - 1] ^= arr[x];
qsort(&arr[i], n - i, sizeof(int32_t), pintcomp);
return true;
}
void printUquotient (ull left, ull right) {
const int32_t digits = 20;
printf("%llu.", left / right);
left %= right;
for (int32_t i = 0; i < digits; i++) {
left *= 10;
printf("%1d", left / right);
left %= right;
}
puts("");
return;
}
void printSquotient (sll left, sll right) {
if (left * right < 0) putchar('-');
printUquotient(sllabs(left, 0), sllabs(right, 0));
return;
}
int bitcount (ull n) {
int result = 0;
while (n) {
if (n & 1) result++;
n /= 2;
}
return result;
}
double distance (sll x1, sll y1, sll x2, sll y2) {
double xdist2, ydist2, origindist, dist;
xdist2 = (x1 - x2) * (x1 - x2);
ydist2 = (y1 - y2) * (y1 - y2);
return sqrt(xdist2 + ydist2);
}
ull solve () {
sll i, j, ki, l;
// ull result = 0;
// sll result = 0;
double result;
// ull sum = 0;
sll sum = 0;
ull item;
ull *dpcell;
// qsortの際には"p"ullcompを使う
for (i = 0; i < n; i++) {
arr[i].a = a[i];
arr[i].b = i + 1;
}
qsort(arr, n, sizeof(hwll), phwllABcomp);
sll index = 0;
for (i = 0; i < n; i++) {
ull limiti = arr[i].a;
ull num = arr[i].b;
if (dp[limiti]) goto fail;
dp[limiti] = num;
// printf("[%lld] <- %llu\n", limiti, num);
j = num - 1;
while (j && index <= limiti) {
if (!dp[index]) {
dp[index] = num;
// printf("[%lld] <- %llu\n", index, num);
j--;
}
if (j <= 0) break;
index++;
}
if (index > limiti) goto fail;
}
for (i = 0; i < n; i++) {
ull limiti = arr[i].a;
ull num = arr[i].b;
while (dp[index]) index++;
if (index < limiti) goto fail;
ull j = n - num;
while (j && index < n * n) {
if (!dp[index]) {
dp[index] = num;
// printf("[%lld] <- %llu\n", index, num);
j--;
}
if (j <= 0) break;
index++;
}
}
puts("Yes");
for (i = 0; i < n * n; i++) {
printf("%llu%c", dp[i], ((i == n * n - 1) ? '\n' : ' '));
}
// printf("%llu\n", result);
// printf("%.12lf\n", result);
// puts(s);
return 0;
success:
// puts("YES");
puts("Yes");
// printf("%llu\n", result);
// puts("Alice");
return 0;
fail:
// puts("NO");
puts("No");
// puts("0");
// puts("-1");
// puts("Brown");
return 1;
}
int32_t main (void) {
int32_t i, j;
int32_t x, y;
// scanf("%lld%lld%lld%lld", &vsa, &vsb, &vsc, &vsd);
// scanf("%llu%llu", &h, &w);
scanf("%llu", &n, &m);
// scanf("%llu%llu", &k, &n);
// scanf("%llu%llu%llu", &vua, &vub, &vuc, &vud);
// scanf("%llu%llu%llu", &vsa, &vsb, &vsc);
// scanf("%s", s);
// scanf("%s", t);
// scanf("%lld%lld", &vsa, &vsb);
for (i = 0; i < n; i++) {
scanf("%llu", &a[i]);
a[i]--;
}
// for (i = 0; i < k; i++) {
// scanf("%d", &dp[i]);
// dp[i]--;
// }
// for (i = 0; i < h; i++) {
// scanf("%llu", &a[i]);
// }
// for (i = 0; i < w; i++) {
// scanf("%llu", &b[i]);
// }
// for (i = 0; i < n; i++) {
// scanf("%lld%lld%lld", &a[i], &b[i], &c[i]);
// }
// for (i = 0; i < h; i++) {
// for (j = 0; j < w; j++) {
// scanf("%llu", &a[i][j]);
// }
// }
solve();
// for (i = 0; i < n; i++) {
// // scanf("%llu%llu", &vua, &vub);
// scanf("%f%f%f", &vda, &vdb, &vdc);
// // scanf("%s", s);
// solve();
// }
// while (scanf("%llu%llu", &n, &k), n + k) {
// for (i = 0; i < n; i++) {
// scanf("%llu", &a[i]);
// }
// solve();
// }
return 0;
}
Submission Info
Submission Time
2018-01-03 17:44:31+0900
Task
D - K-th K
User
sheyasutaka
Language
C (GCC 5.4.1)
Score
800
Code Size
9911 Byte
Status
AC
Exec Time
25 ms
Memory
5244 KB
Compile Error
./Main.c: In function ‘printUquotient’:
./Main.c:365:9: warning: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 2 has type ‘ull {aka long unsigned int}’ [-Wformat=]
printf("%llu.", left / right);
^
./Main.c:369:10: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘ull {aka long unsigned int}’ [-Wformat=]
printf("%1d", left / right);
^
./Main.c: In function ‘solve’:
./Main.c:460:10: warning: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 2 has type ‘ull {aka long unsigned int}’ [-Wformat=]
printf("%llu%c", dp[i], ((i == n * n - 1) ? '\n' : ' '));
^
./Main.c: In function ‘main’:
./Main.c:491:8: warning: format ‘%llu’ expects argument of type ‘long long unsigned int *’, but argument 2 has type ‘ull * {aka long unsigned int *}’ [-Wformat=]
scanf("%llu", &n, &m);
^
./Main.c:491:8: warning: too many arguments for format [-Wformat-extra-args]
./Main.c:499:9: warning: format ‘%l...
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
800 / 800
Status
Set Name
Test Cases
Sample
0_00.txt, 0_01.txt
All
0_00.txt, 0_01.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt, 1_46.txt
Case Name
Status
Exec Time
Memory
0_00.txt
AC
1 ms
2176 KB
0_01.txt
AC
1 ms
2176 KB
1_00.txt
AC
1 ms
2176 KB
1_01.txt
AC
25 ms
5244 KB
1_02.txt
AC
25 ms
5244 KB
1_03.txt
AC
25 ms
5244 KB
1_04.txt
AC
25 ms
5244 KB
1_05.txt
AC
25 ms
5244 KB
1_06.txt
AC
25 ms
5244 KB
1_07.txt
AC
25 ms
5244 KB
1_08.txt
AC
25 ms
5244 KB
1_09.txt
AC
1 ms
2176 KB
1_10.txt
AC
1 ms
4220 KB
1_11.txt
AC
1 ms
2300 KB
1_12.txt
AC
1 ms
2176 KB
1_13.txt
AC
1 ms
4220 KB
1_14.txt
AC
1 ms
2176 KB
1_15.txt
AC
17 ms
4860 KB
1_16.txt
AC
1 ms
2176 KB
1_17.txt
AC
2 ms
4220 KB
1_18.txt
AC
22 ms
5116 KB
1_19.txt
AC
23 ms
5116 KB
1_20.txt
AC
18 ms
4988 KB
1_21.txt
AC
23 ms
5116 KB
1_22.txt
AC
21 ms
4988 KB
1_23.txt
AC
2 ms
4220 KB
1_24.txt
AC
22 ms
5116 KB
1_25.txt
AC
18 ms
4988 KB
1_26.txt
AC
2 ms
4220 KB
1_27.txt
AC
2 ms
4220 KB
1_28.txt
AC
1 ms
2300 KB
1_29.txt
AC
2 ms
4220 KB
1_30.txt
AC
21 ms
5116 KB
1_31.txt
AC
24 ms
5116 KB
1_32.txt
AC
1 ms
2176 KB
1_33.txt
AC
23 ms
5116 KB
1_34.txt
AC
1 ms
2176 KB
1_35.txt
AC
2 ms
4220 KB
1_36.txt
AC
23 ms
5116 KB
1_37.txt
AC
21 ms
5116 KB
1_38.txt
AC
24 ms
5116 KB
1_39.txt
AC
1 ms
2176 KB
1_40.txt
AC
11 ms
4604 KB
1_41.txt
AC
2 ms
4220 KB
1_42.txt
AC
15 ms
4860 KB
1_43.txt
AC
22 ms
5116 KB
1_44.txt
AC
1 ms
2176 KB
1_45.txt
AC
1 ms
2176 KB
1_46.txt
AC
2 ms
4220 KB