Codeforces Round #351 Div2 D: Bear and Two Paths
解法
埋め込み
コード
#include <bits/stdc++.h> using namespace std; int main() { cin.tie(0); ios::sync_with_stdio(false); int N, K; cin >> N >> K; int a, b, c, d; cin >> a >> b >> c >> d; vector<bool> used(N + 1, false); used[a] = true; used[b] = true; used[c] = true; used[d] = true; if (N == 4) { cout << -1 << endl; return 0; } int e = 0; for (int i = 1; i <= N; ++i) if (!used[i]) { e = i; used[i] = true; break; } assert(e > 0); if (N == 5) { if (K < 6) { cout << -1 << endl; return 0; } cout << a << " " << c << " " << e << " " << d << " " << b << endl; cout << c << " " << a << " " << e << " " << b << " " << d << endl; return 0; } if (K < N - 1 + 2) { cout << -1 << endl; return 0; } cout << a << " "; for (int i = 1; i <= N; ++i) { if (!used[i]) { cout << i << " "; } } cout << c << " " << e << " " << d << " " << b << endl; cout << c << " "; for (int i = N; i >= 1; --i) { if (!used[i]) { cout << i << " "; } } cout << a << " " << e << " " << b << " " << d << endl; }