結果
問題 | No.466 ジオラマ |
ユーザー |
![]() |
提出日時 | 2019-09-02 20:29:24 |
言語 | C (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,517 bytes |
コンパイル時間 | 503 ms |
コンパイル使用メモリ | 31,616 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-17 14:58:02 |
合計ジャッジ時間 | 5,148 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 74 WA * 9 |
コンパイルメッセージ
main.c: In function 'in': main.c:7:14: warning: implicit declaration of function 'getchar_unlocked' [-Wimplicit-function-declaration] 7 | #define gc() getchar_unlocked() | ^~~~~~~~~~~~~~~~ main.c:15:24: note: in expansion of macro 'gc' 15 | int n = 0, c = gc(); | ^~ main.c: In function 'out': main.c:8:15: warning: implicit declaration of function 'putchar_unlocked' [-Wimplicit-function-declaration] 8 | #define pc(c) putchar_unlocked(c) | ^~~~~~~~~~~~~~~~ main.c:23:17: note: in expansion of macro 'pc' 23 | if (!n) pc('0'); | ^~
ソースコード
// yukicoder: 466 ジオラマ// 2019.9.2 bal4u#include <stdio.h>#if 1#define gc() getchar_unlocked()#define pc(c) putchar_unlocked(c)#else#define gc() getchar()#define pc(c) putchar(c)#endifint in() { // 非負整数の入力int n = 0, c = gc();do n = 10 * n + (c & 0xf); while ((c = gc()) >= '0');return n;}void out(int n) { // 非負整数の表示(出力)int i; char b[30];if (!n) pc('0');else {i = 0; while (n) b[i++] = n % 10 + '0', n /= 10;while (i--) pc(b[i]);}}void pr(int a, int b) { out(a), pc(' '), out(b), pc('\n'); }void draw(int root, int n, int c, int a) {int i;pr(1+c+a, c+a);pr(root, n); for (i = 1; i < c; i++) pr(n, i+1), n = i+1;if (a > 0) pr(root, c+1); for (i = 1; i < a; i++) pr(i+c, i+c+1);}int main(){int i, A, B, C, D, a, b, N, M;A = in(), B = in(), C = in(), D = in();if (A == B && B == C) {if (D < C) goto NG;pr(A, A); for (i = 1; i < A; i++) pr(i-1, i);pr(A-1, 0);return 0;}if (A == C) {if (D < B-1) goto NG;draw(1, 0, C, B-1-C);} else if (B == C) {if (D < A-1) goto NG;draw(0, 1, C, A-1-C);} else {N = A+B-C, a = A-1-C, b = B-1-C;M = N-1;if (C == 0 && (a == 0 || b == 0)) M--;if (D < M) goto NG;pr(N, M);if (C > 0) { pr(0, 2), pr(1, 2); for (i = 1; i < C; i++) pr(i+1, i+2); }if (a > 0) { pr(0, C+2); for (i = 1; i < a; i++) pr(i+C+1, i+C+2); }if (b > 0) { pr(1, C+a+2); for (i = 1; i < b; i++) pr(i+C+a+1, i+C+a+2); }}return 0;NG: puts("-1");return 0;}