結果
問題 |
No.466 ジオラマ
|
ユーザー |
![]() |
提出日時 | 2025-06-21 17:15:26 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 2,042 bytes |
コンパイル時間 | 3,179 ms |
コンパイル使用メモリ | 285,208 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-06-21 17:15:33 |
合計ジャッジ時間 | 6,457 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 83 |
ソースコード
#include <bits/stdc++.h> #define int long long //#define USE_FREOPEN //#define MUL_TEST #define FILENAME "hometown" using namespace std; void solve() { vector<pair<int, int> > edg; int a, b, c, d; cin >> a >> b >> c >> d; if (a == c && b == c) { if (a == 1) { cout << "-1\n"; return; } for (int i = 0; i < a; i++) { edg.push_back(make_pair(i, (i + 1) % a)); } } else if (a == c) { int x1 = 1, x2 = 2; for (int i = 0; i < b - a - 1; i++) { edg.push_back(make_pair(x1, x2)); x1 = x2++; } edg.push_back(make_pair(x1, 0)); x1 = 0; for (int i = 0; i < a - 1; i++) { edg.push_back(make_pair(x1, x2)); x1 = x2++; } } else if (b == c) { int x1 = 0, x2 = 2; for (int i = 0; i < a - b - 1; i++) { edg.push_back(make_pair(x1, x2)); x1 = x2++; } edg.push_back(make_pair(x1, 1)); x1 = 1; for (int i = 0; i < b - 1; i++) { edg.push_back(make_pair(x1, x2)); x1 = x2++; } } else if (c == 0) { int x1 = 2; for (int i = 0; i < a - 1; i++) edg.push_back(make_pair(0, x1++)); for (int i = 0; i < b - 1; i++) edg.push_back(make_pair(1, x1++)); } else { edg.push_back(make_pair(0, 2)); edg.push_back(make_pair(1, 2)); int x1 = 2, x2 = 3; for (int i = 0; i < c - 1; i++) { edg.push_back(make_pair(x1, x2)); x1 = x2++; } x1 = x2; for (int i = 0; i < a - c - 1; i++) edg.push_back(make_pair(0, x1++)); for (int i = 0; i < b - c - 1; i++) edg.push_back(make_pair(1, x1++)); } if (edg.size() > d) { cout << "-1\n"; } else { int maxn = 1; for (auto it : edg) { maxn = max(maxn, max(it.first, it.second)); } cout << maxn + 1 << ' ' << edg.size() << '\n'; for (auto it : edg) { int u = it.first, v = it.second; cout << u << ' ' << v << '\n'; } } } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); #ifdef USE_FREOPEN freopen(FILENAME ".in", "r", stdin); freopen(FILENAME ".out", "w", stdout); #endif int _ = 1; #ifdef MUL_TEST cin >> _; #endif while (_--) solve(); _^=_; return 0^_^0; }