This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "swaps.h"
using namespace std;
#define endl '\n'
#define st first
#define nd second
#define pb push_back
#define sz(x) (int)(x).size()
#define all(x) (x).begin(), (x).end()
#define ll long long
ll mod=1000000007;
int inf=1000000007;
ll infl=1000000000000000007;
const int N=507;
/*
int p[N];
vector<pair<int,int>>tmp;
void schedule(int a,int b)
{
tmp.pb({a,b});
}
vector<int>visit()
{
vector<int>res;
for(auto x:tmp) res.pb(p[x.st]>p[x.nd]);
tmp.clear();
return res;
}
void answer(vector<int>V)
{
for(auto x:V) cout<<x<<" ";
cout<<endl;
}*/
void solve(int n,int v)
{
vector<vector<pair<int,int>>>res;
vector<pair<int,int>>V;
vector<int>ans(n);
for(int i=0;i<n;i++) ans[i]=i+1;
V.pb({1,n});
while(sz(V)>0)
{
vector<pair<int,int>>X;
vector<vector<pair<int,int>>>T;
for(auto [l,r]:V) X.pb({l,r});
while(sz(X)>0)
{
vector<pair<int,int>>nX,t;
for(auto [l,r]:X)
{
int m=(l+r)/2;
if(l<m) nX.pb({l,m});
if(m+1<r) nX.pb({m+1,r});
for(int i=0; m-i>=l&&m+i+1<=r;i++) t.pb({m-i,m+i+1});
}
T.pb(t);
X=nX;
}
reverse(all(T));
for(auto x:T) res.pb(x);
vector<pair<int,int>>nV;
for(auto [l,r]:V)
{
int m=(l+r)/2;
if(l<m) nV.pb({l,m});
if(m+1<r) nV.pb({m+1,r});
}
V=nV;
}
for(auto x:res)
{
for(auto [a,b]:x) schedule(ans[a-1],ans[b-1]);
vector<int>A=visit();
int it=0;
for(auto [a,b]:x)
{
if(A[it]==0) swap(ans[a-1],ans[b-1]);
it++;
}
}
answer(ans);
}
/*
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>p[i];
solve(n,0);
return 0;
}*/
Compilation message (stderr)
swaps.cpp: In function 'void solve(int, int)':
swaps.cpp:53:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
53 | for(auto [l,r]:V) X.pb({l,r});
| ^
swaps.cpp:57:22: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
57 | for(auto [l,r]:X)
| ^
swaps.cpp:70:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
70 | for(auto [l,r]:V)
| ^
swaps.cpp:80:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
80 | for(auto [a,b]:x) schedule(ans[a-1],ans[b-1]);
| ^
swaps.cpp:83:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
83 | for(auto [a,b]:x)
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |