結果
| 問題 | No.3735 Offbeat Permutation Tree |
| コンテスト | |
| ユーザー |
p2
|
| 提出日時 | 2026-09-19 15:41:54 |
| 言語 | C++23(gcc16) (gcc 16.1.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 694 ms / 2,000 ms |
| + 260µs | |
| コード長 | 3,224 bytes |
| 記録 | |
| コンパイル時間 | 2,890 ms |
| コンパイル使用メモリ | 372,756 KB |
| 実行使用メモリ | 675,264 KB |
| 最終ジャッジ日時 | 2026-09-19 15:42:35 |
| 合計ジャッジ時間 | 26,425 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge4_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 35 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define pb push_back
#define ppb pop_back
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef pair<ll, ll> pl;
typedef vector<ll> vl;
typedef vector<vl> vvl;
#define rep2(i, n) for (ll i = 0; i < (n); ++i)
#define rep3(i, a, b) for (ll i = (a); i < (b); ++i)
#define rep_select(_1, _2, _3, name, ...) name
#define rep(...) rep_select(__VA_ARGS__, rep3, rep2)(__VA_ARGS__)
#define rrep2(i, n) for (ll i = (ll)(n) - 1; i >= 0; --i)
#define rrep3(i, a, b) for (ll i = (ll)(b) - 1; i >= (ll)(a); --i)
#define rrep(...) rep_select(__VA_ARGS__, rrep3, rrep2)(__VA_ARGS__)
vector<vector<pair<pl,pl>>> ans(505);
ll n;
ll id(pl p){
return p.first*n+p.second+1;
}
int main() {
cin >> n;
if(n<=3){
cout << -1 << endl;
return 0;
}
ans[4]={{{0,0},{1,0}},{{1,0},{2,0}},{{2,0},{3,0}},{{3,0},{3,1}},{{3,1},{3,2}},{{3,2},{2,2}},{{2,2},{2,3}},{{1,2},{2,2}},{{2,1},{1,1}},{{1,1},{0,1}},{{0,1},{0,2}},{{0,3},{0,2}},{{0,3},{1,3}},{{1,3},{2,3}},{{2,3},{3,3}}};
ans[5]={{{0,0},{0,1}},{{0,1},{0,2}},{{0,0},{1,0}},{{1,0},{1,1}},{{1,1},{1,2}},{{1,2},{2,2}},{{2,1},{2,2}},{{2,1},{3,1}},{{2,2},{3,2}},{{3,2},{3,3}},{{3,3},{3,4}},{{3,4},{4,4}},{{2,0},{3,0}},{{3,0},{4,0}},{{4,0},{4,1}},{{4,1},{4,2}},{{4,2},{4,3}},{{3,3},{4,3}},{{2,3},{3,3}},{{2,3},{2,4}},{{1,4},{2,4}},{{0,4},{1,4}},{{0,3},{0,4}},{{0,3},{1,3}}};
if(n%2==0){
for(ll i=4;i<=500;i+=2){
for(auto [p,q]:ans[i]){
auto [a,b]=p;
auto [c,d]=q;
ans[i+2].pb({{a+1,b+1},{c+1,d+1}});
}
if(i%4==0){
rep(j,i){
ans[i+2].pb({{0,j},{0,j+1}});
ans[i+2].pb({{i+1,j+1},{i+1,j+2}});
}
rep(j,i+1){
ans[i+2].pb({{j,0},{j+1,0}});
ans[i+2].pb({{j,i+1},{j+1,i+1}});
}
ans[i+2].pb({{0,i},{1,i}});
ans[i+2].pb({{i,1},{i+1,1}});
}
else{
rep(j,i){
ans[i+2].pb({{0,j+1},{0,j+2}});
ans[i+2].pb({{i+1,j},{i+1,j+1}});
}
rep(j,i+1){
ans[i+2].pb({{j,0},{j+1,0}});
ans[i+2].pb({{j,i+1},{j+1,i+1}});
}
ans[i+2].pb({{0,1},{1,1}});
ans[i+2].pb({{i,i},{i+1,i}});
}
}
}
else{
for(ll i=5;i<=500;i+=2){
for(auto [p,q]:ans[i]){
auto [a,b]=p;
auto [c,d]=q;
ans[i+2].pb({{a+1,b+1},{c+1,d+1}});
}
if(i%4==1){
rep(j,i){
ans[i+2].pb({{0,j},{0,j+1}});
ans[i+2].pb({{i+1,j+1},{i+1,j+2}});
}
rep(j,i+1){
ans[i+2].pb({{j,0},{j+1,0}});
ans[i+2].pb({{j,i+1},{j+1,i+1}});
}
ans[i+2].pb({{0,i},{1,i}});
ans[i+2].pb({{i,1},{i+1,1}});
}
else{
rep(j,i){
ans[i+2].pb({{0,j+1},{0,j+2}});
ans[i+2].pb({{i+1,j},{i+1,j+1}});
}
rep(j,i+1){
ans[i+2].pb({{j,0},{j+1,0}});
ans[i+2].pb({{j,i+1},{j+1,i+1}});
}
ans[i+2].pb({{0,1},{1,1}});
ans[i+2].pb({{i,i},{i+1,i}});
}
}
}
for(auto [x,y]:ans[n]){
cout << id(x) << " " << id(y) << endl;
}
//cout << ans[n].size() << endl;
}
p2