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>
using namespace std;
int n;
long long r;
int arr[10005],brr[10005],at;
int calc(){
if(arr[at]==1) return 1;
for(int i=0; i<2*n; i++) brr[i]=arr[i];
int ex[n];
memset(ex,0,sizeof(ex));
for(int k=0; k<n; k++){
if(brr[1]>brr[0]) ex[0]=1;
for(int j=1; j<n; j++){
if(brr[j<<1|1]<brr[j<<1]) ex[j]=1;
}
swap(brr[ex[0]],brr[(n-1)<<1|ex[n-1]]);
for(int i=0; i<n-1; i++){
swap(brr[i<<1|ex[i]],brr[(i+1)<<1|ex[i+1]]);
}
}
int cur=0;
for(int i=0; i<2*n; i++){
if(arr[at]==brr[i]) cur=i/2;
}
if(arr[at]<=n) return cur;
cur-=r-n;
cur%=n;
if(cur<0) cur+=n;
return cur+1;
}
int32_t main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> r;
for(int i=0; i<2*n; i++){
cin >> arr[i];
}
pair<int,int> ans={1e8,-1};
for(int i=0; i<2*n; i++){
int x=calc();
if(x<=ans.first) ans={x,i};
if(i<2*n-1){
at++;
swap(arr[i],arr[i+1]);
}
}
cout << ans.second/2+1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |