Submission #804991

# Submission time Handle Problem Language Result Execution time Memory
804991 2023-08-03T12:18:55 Z tomruk Sorting (IOI15_sorting) C++17
0 / 100
1 ms 596 KB
#include "sorting.h"
#include <bits/stdc++.h>
using namespace std;

int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]){
    int l = 0,r = M;
	while(l < r){
		int m = (l + r)/2;
		vector<int> v;
		for(int i = 0;i<N;i++){
			v.push_back(S[i]);
		}
		vector<int> ord(N,0);
		iota(ord.begin(),ord.end(),0);
		vector<int> pos = ord;
		for(int i = m-1;i>=0;i--){
			pos[ord[Y[i]]] = X[i];
			pos[ord[X[i]]] = Y[i];
			swap(ord[X[i]],ord[Y[i]]);
		}
		int last = -1;
		for(int i = 0;i<m;i++){
			pos[ord[Y[i]]] = X[i];
			pos[ord[X[i]]] = Y[i];
			swap(ord[X[i]],ord[Y[i]]);
			swap(v[X[i]],v[Y[i]]);
			last++;
			while(last < N && last == pos[v[last]]){
				last++;
			}
			if(last < N){
				swap(v[last],v[pos[v[last]]]);
			}
		}
		if(is_sorted(v.begin(),v.end())){
			r = m;
		}
		else l = m + 1;
	}
	int m = l;
	vector<int> v;
	for(int i = 0;i<N;i++){
		v.push_back(S[i]);
	}
	vector<int> ord(N,0);
	iota(ord.begin(),ord.end(),0);
	vector<int> pos = ord;
	for(int i = m-1;i>=0;i--){
		pos[ord[Y[i]]] = X[i];
		pos[ord[X[i]]] = Y[i];
		swap(ord[X[i]],ord[Y[i]]);
	}
	int last = -1;
	for(int i = 0;i<m;i++){
		pos[ord[Y[i]]] = X[i];
		pos[ord[X[i]]] = Y[i];
		swap(ord[X[i]],ord[Y[i]]);
		swap(v[X[i]],v[Y[i]]);
		last++;
		while(last < N && last == pos[v[last]]){
			last++;
		}
		P[i] = Q[i] = 0;
		if(last < N){
			P[i] = last;
			Q[i] = pos[v[last]];
			swap(v[last],v[pos[v[last]]]);
		}
	}
	assert(is_sorted(v.begin(),v.end()));
	return l;
}


# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Runtime error 1 ms 340 KB Execution killed with signal 6
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Runtime error 1 ms 340 KB Execution killed with signal 6
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Runtime error 1 ms 468 KB Execution killed with signal 6
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Runtime error 1 ms 340 KB Execution killed with signal 6
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 596 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 596 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -