Submission #128008

# Submission time Handle Problem Language Result Execution time Memory
128008 2019-07-10T10:23:05 Z ekrem Sorting (IOI15_sorting) C++
36 / 100
1000 ms 1100 KB
#include "sorting.h"
#include <bits/stdc++.h>
#define st first
#define nd second
#define mp make_pair
#define pb push_back
#define sol (k+k)
#define sag (k+k+1)
#define orta ((bas+son)/2)
#define coc g[node][i]
#define EKLE 1
#define mod 1000000007
#define inf 1000000009
#define MAXN 1000005
using namespace std;

typedef long long ll;
typedef pair < int , int > ii;

int n, m, f, a[MAXN], b[MAXN], x[MAXN], y[MAXN], yer[MAXN], p[MAXN], q[MAXN], s[MAXN];

bool dene(int son){
	// cout << son << " -> ";
	for(int i = 1; i <= n; i++)a[i] = s[i];

	for(int i = 1; i <= n; i++)
		b[i] = i;
	for(int i = son; i >= 1; i--){
		swap(b[x[i]], b[y[i]]);
	// for(int i = 1; i <= n; i++)cout << b[i] << " ";cout << endl;

	}
	for(int i = 1; i <= n; i++)
		yer[a[i]] = i;
	int su = 1;
	for(int i = 1; i <= son; i++){
		swap(a[x[i]], a[y[i]]);
		swap(yer[a[x[i]]], yer[a[y[i]]]);
		swap(b[x[i]], b[y[i]]);
		// for(int i = 1; i <= n; i++)cout << a[i] << " ";cout << endl;
		// for(int i = 1; i <= n; i++)cout << b[i] << " ";cout << endl;
		while(su <= n and yer[su] == b[su])
			su++;
		if(su <= n){
			// cout << su << " icin " << yer[su] << " " << b[su] << endl;
			p[i] = yer[su];
			q[i] = b[su];
			swap(a[p[i]], a[q[i]]);
			swap(yer[a[p[i]]], yer[a[q[i]]]);
			su++;
		} else
			p[i] = q[i] = 1;
	}
	// cout << son << " -> ";for(int i = 1; i <= n; i++)cout << a[i] << " ";cout << endl;
	for(int i = 1; i <= n; i++)
		if(a[i] != i)
			return 0;
	return 1;
}

int findSwapPairs(int nn, int S[], int M, int X[], int Y[], int P[], int Q[]) {n = nn;m = M;
	for(int i = 1; i <= n; i++){
		s[i] = a[i] = S[i - 1] + EKLE;
		if(a[i] != i)
			f = 1;
	}
	if(!f)return 0;
	for(int i = 1; i <= m; i++){
		x[i] = X[i - 1] + EKLE;
		y[i] = Y[i - 1] + EKLE;
	}
	// int bas = 1, son = m;
	// while(bas < son){
	// 	if(dene(orta))
	// 		son = orta;
	// 	else
	// 		bas = orta + 1;
	// }
	// cout << orta << endl;
	for(int j = 1; j <= m; j++){
		if(!dene(j))continue;
		for(int i = 1; i <= j; i++){
			P[i - 1] = p[i] - 1;
			Q[i - 1] = q[i] - 1;
		}
		return j;	
	}
	// dene(9);
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 2 ms 256 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Correct 3 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 252 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 3 ms 504 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 2 ms 256 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Correct 3 ms 376 KB Output is correct
13 Correct 2 ms 252 KB Output is correct
14 Correct 2 ms 376 KB Output is correct
15 Correct 2 ms 376 KB Output is correct
16 Correct 3 ms 504 KB Output is correct
17 Correct 2 ms 376 KB Output is correct
18 Correct 2 ms 376 KB Output is correct
19 Correct 2 ms 376 KB Output is correct
20 Correct 2 ms 256 KB Output is correct
21 Execution timed out 1052 ms 1100 KB Time limit exceeded
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 281 ms 720 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 281 ms 720 KB Output isn't correct
2 Halted 0 ms 0 KB -