| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1090970 | owoovo | 정렬하기 (IOI15_sorting) | C++17 | 1 ms | 604 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;
int tar[1000010],tarp[1000010],n,x[1000010],y[1000010],s[1000010],mp[1000010];
int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
	n=N;
	for(int i=0;i<M;i++){
		x[i+1]=X[i];
		y[i+1]=Y[i];
	}
	int l=0,r=M;
	while(l!=r){
		int m=(l+r)>>1,ok=1;
		//cout<<l<<" "<<r<<" "<<m<<"\n";
		for(int i=0;i<N;i++){
			tar[i]=i;
			s[i]=S[i];
		}
		for(int i=m;i>0;i--){
			swap(tar[x[i]],tar[y[i]]);
		}
		for(int i=0;i<N;i++){
			tarp[tar[i]]=i;
		}
		int ans=0;
		for(int i=0;i<N;i++){
			if(s[i]==tar[i])continue;
			int ori=i;
			while(tarp[s[ori]]!=ori){
				P[ans]=tarp[s[ori]];
				Q[ans]=ori;
				swap(s[tarp[s[ori]]],s[ori]);
				ans++;
			}
		}
		if(ans>m){
			l=m+1;
		}else{
			r=m;
		}
	}
	int m=l;
	for(int i=0;i<N;i++){
		tar[i]=i;
		s[i]=S[i];
	}
	for(int i=m;i>0;i--){
		swap(tar[x[i]],tar[y[i]]);
	}
	for(int i=0;i<N;i++){	
		tarp[tar[i]]=i;
	}
	int ans=0;
	for(int i=0;i<N;i++){
		//cout<<s[i]<<" "<<tar[i]<<"\n";
		if(s[i]==tar[i])continue;
		int ori=i;
		while(ori!=tarp[s[ori]]){
			//cout<<now<<" "<<ori<<"\n";
			P[ans]=tarp[s[ori]];
			Q[ans]=ori;
			swap(s[tarp[s[ori]]],s[ori]);
			ans++;
		}
	}
	for(int i=0;i<N;i++)mp[i]=i;
	for(int i=0;i<m;i++){
		swap(mp[X[i]],mp[Y[i]]);
		P[i]=mp[P[i]];
		Q[i]=mp[Q[i]];
	}
	for(int i=ans;i<m;i++)Q[i]=0,P[i]=0;
	return l;
}
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... | ||||
