結果
| 問題 |
No.466 ジオラマ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-12-16 14:53:18 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
AC
|
| 実行時間 | 9 ms / 2,000 ms |
| コード長 | 1,406 bytes |
| コンパイル時間 | 818 ms |
| コンパイル使用メモリ | 111,992 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-12 05:39:12 |
| 合計ジャッジ時間 | 4,400 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 83 |
ソースコード
import std.stdio, std.array, std.string, std.conv, std.algorithm;
import std.typecons, std.range, std.random, std.math, std.container;
import std.numeric, std.bigint, core.bitop, core.stdc.stdio;
void w(int a, int b) {writeln(a, " ", b);}
void main() {
int A, B, C, D;
scanf("%d %d %d %d", &A, &B, &C, &D);
if (A == C && B == C) {
if (C == 1 || D < C) {writeln(-1); return;}
w(C, C);
w(0, 1);
w(1, 0);
foreach (i; 2..C)
w(0, i);
}
else if (A == C) {
if (D < B-1) {writeln(-1); return;}
w(B, B-1);
foreach (i; 2..A+1)
w(0, i);
w(1, 0);
foreach (i; 0..B-A-1)
w(1, A+1+i);
}
else if (B == C) {
if (D < A-1) {writeln(-1); return;}
w(A, A-1);
foreach (i; 2..B+1)
w(1, i);
w(0, 1);
foreach (i; 0..A-B-1)
w(0, B+1+i);
}
else {
int nodes = A + B - C;
int edges = (A - C - 1) + (B - C - 1) + (C > 0 ? C + 1 : 0);
if (D < edges) {writeln(-1); return;}
w(nodes, edges);
int n = 1;
if (C > 0) {
w(0, 2);
w(1, 2);
n++;
foreach (i; 0..C-1) {
w(n, n+1);
n++;
}
}
if (A - C - 1 > 0) {
n++;
w(0, n);
foreach (i; 0..A-C-2) {
w(n, n+1);
n++;
}
}
if (B - C - 1 > 0) {
n++;
w(1, n);
foreach (i; 0..B-C-2) {
w(n, n+1);
n++;
}
}
}
}