Submission #114697

# Submission time Handle Problem Language Result Execution time Memory
114697 2019-06-02T11:03:35 Z arman_ferdous Sorting (IOI15_sorting) C++17
20 / 100
1000 ms 512 KB
#include "sorting.h"
#include <bits/stdc++.h>
using namespace std;

const int N = 2e5+100;
int n, ss[N], m, x[N], y[N], p[N], q[N];

int tmp[N];
int solve(int M) {
	for(int i = 0; i < n; i++)
		tmp[i] = ss[i];

	for(int i = 0; i < M; i++)
		swap(tmp[x[i]], tmp[y[i]]);
	int cur = 0, R = 0;
	for(int i = 0; i < n; ) {
		if(tmp[i] == i) { i++; continue; }
		int pp = i, qq = tmp[i];
		if(cur >= M) return -1;

		for(int j = M-1; j > cur; j--) {
			if((x[j] == pp && y[j] == qq) || (x[j] == qq && y[j] == pp)) swap(pp, qq);
    		else {
	    		if(x[j] == pp) pp = y[j];
	    		else if(y[j] == pp) pp = x[j];
	    		if(x[j] == qq) qq = y[j];
	    		else if(y[j] == qq) qq = x[j];
	    	}
		}

		p[R] = pp, q[R] = qq;
		R++, cur++;
		swap(tmp[i], tmp[tmp[i]]);
	}
	return R;
}

int findSwapPairs(int _n, int S[], int M, int X[], int Y[], int P[], int Q[]) {
	n = _n, m = M;
	for(int i = 0; i < n; i++)
		ss[i] = S[i];
	for(int i = 0; i < m; i++)
		x[i] = X[i], y[i] = Y[i];

	// int lo = 0, hi = M, idx;
	// while(lo <= hi) {
	// 	int mid = (lo + hi) >> 1;
	// 	int R = solve(mid);
	// 	if(R == -1) lo = mid+1;
	// 	else idx = mid, hi = mid-1;
	// }

	for(int i = 0; i <= M; i++)
		if(solve(i) == i) {
			for(int j = 0; j < i; j++)
				P[j] = p[j], Q[j] = q[j];
			return i;
		}
	// int R = solve(idx);
	// for(int i = 0; i < R; i++)
	// 	P[i] = p[i], Q[i] = q[i];
}

Compilation message

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:62:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 2 ms 384 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 384 KB Output is correct
11 Correct 2 ms 384 KB Output is correct
12 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Incorrect 2 ms 384 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 2 ms 384 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 384 KB Output is correct
11 Correct 2 ms 384 KB Output is correct
12 Correct 2 ms 384 KB Output is correct
13 Correct 2 ms 384 KB Output is correct
14 Correct 2 ms 384 KB Output is correct
15 Correct 3 ms 384 KB Output is correct
16 Correct 2 ms 384 KB Output is correct
17 Correct 2 ms 384 KB Output is correct
18 Incorrect 2 ms 384 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1068 ms 512 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1068 ms 512 KB Time limit exceeded
2 Halted 0 ms 0 KB -