# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
672810 | jamezzz | Sorting (IOI15_sorting) | C++17 | 302 ms | 25232 KiB |
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 "sorting.h"
#include <bits/stdc++.h>
using namespace std;
#define maxn 200005
int a[maxn],pos[maxn],plate[maxn];
int findSwapPairs(int N,int S[],int M,int X[],int Y[],int P[],int Q[]){
int lo=0,hi=M,mid,res=0;
while(lo<=hi){
mid=(lo+hi)>>1;
//printf("mid: %d\n",mid);
for(int i=0;i<N;++i)plate[i]=i,a[i]=S[i];
for(int i=mid-1;i>=0;--i)swap(plate[X[i]],plate[Y[i]]);
for(int i=0;i<N;++i)pos[plate[i]]=i;
//printf("pos: ");for(int i=0;i<N;++i)printf("%d ",pos[i]);printf("\n");
//printf("plate: ");for(int i=0;i<N;++i)printf("%d ",plate[i]);printf("\n");
vector<pair<int,int>> v;
for(int i=0;i<N;++i){
while(plate[i]!=a[i]){
v.push_back({plate[i],a[i]});
//printf("swap: %d %d\n",a[i],plate[i]);
swap(a[i],a[pos[a[i]]]);
}
}
if(v.size()<=mid){
for(int i=0;i<v.size();++i){
int a=plate[X[i]],b=plate[Y[i]];
swap(pos[a],pos[b]);
swap(plate[X[i]],plate[Y[i]]);
auto[x,y]=v[i];
P[i]=pos[x],Q[i]=pos[y];
//printf("plate: ");for(int i=0;i<N;++i)printf("%d ",plate[i]);printf("\n");
//printf("pos: ");for(int i=0;i<N;++i)printf("%d ",pos[i]);printf("\n");
}
for(int i=v.size();i<M;++i)P[i]=Q[i]=0;
hi=mid-1;
res=mid;
}
else lo=mid+1;
}
return res;
}
Compilation message (stderr)
# | 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... |