# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
384406 |
2021-04-01T15:38:12 Z |
doowey |
Sorting (IOI15_sorting) |
C++14 |
|
539 ms |
34716 KB |
#include <bits/stdc++.h>
#include "sorting.h"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
#define fi first
#define se second
#define mp make_pair
#define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int N = (int)2e5 + 10;
int seq[N];
int n, m;
vector<pii> sw;
int who[N];
int nex[N];
int cac[N];
int cur[N];
int ind[N];
vector<pii> soln;
bool can(int k){
soln.clear();
for(int i = 0 ; i < n; i ++ ){
who[i] = i;
cur[i] = seq[i];
ind[cur[i]] = i;
}
for(int i = 0 ; i < k ; i ++ ){
swap(who[sw[i].fi], who[sw[i].se]);
}
for(int i = 0 ; i < n; i ++ ){
nex[who[i]] = i;
}
for(int i = 0 ; i < n; i ++ ){
cac[nex[i]] = i;
}
int cnt = 0;
int pi, qi;
for(int i = 0 ; i < k; i ++ ){
swap(nex[sw[i].fi], nex[sw[i].se]);
cac[nex[sw[i].fi]] = sw[i].fi;
cac[nex[sw[i].se]] = sw[i].se;
swap(cur[sw[i].fi], cur[sw[i].se]);
ind[cur[sw[i].fi]] = sw[i].fi;
ind[cur[sw[i].se]] = sw[i].se;
while(cnt < n){
if(ind[cnt] == cac[cnt]) cnt ++ ;
else{
break;
}
}
if(cnt == n){
soln.push_back(mp(0, 0));
}
else{
pi = ind[cnt];
qi = cac[cnt];
soln.push_back(mp(pi, qi));
swap(cur[pi], cur[qi]);
ind[cur[pi]] = pi;
ind[cur[qi]] = qi;
}
}
while(cnt < n){
if(ind[cnt] == cac[cnt]) cnt ++ ;
else{
break;
}
}
if(cnt == n)
return true;
else
return false;
}
int findSwapPairs(int _N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
P[0] = 0;
Q[0] = 0;
n = _N;
m = M;
for(int i = 0 ; i < n; i ++ ){
seq[i] = S[i];
}
for(int i = 0 ; i < m ; i ++ ){
sw.push_back(mp(X[i], Y[i]));
}
int l = 0, r = m;
int mid;
while(l < r){
mid = (l + r) / 2;
if(can(mid))
r = mid;
else
l = mid + 1;
}
can(l);
for(int i = 0 ; i < l ; i ++ ){
P[i] = soln[i].fi;
Q[i] = soln[i].se;
}
return l;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
364 KB |
Output is correct |
2 |
Correct |
1 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
1 ms |
364 KB |
Output is correct |
7 |
Correct |
1 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
364 KB |
Output is correct |
2 |
Correct |
1 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
1 ms |
364 KB |
Output is correct |
7 |
Correct |
1 ms |
364 KB |
Output is correct |
8 |
Correct |
1 ms |
500 KB |
Output is correct |
9 |
Correct |
1 ms |
364 KB |
Output is correct |
10 |
Correct |
1 ms |
492 KB |
Output is correct |
11 |
Correct |
1 ms |
492 KB |
Output is correct |
12 |
Correct |
2 ms |
492 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
1 ms |
384 KB |
Output is correct |
3 |
Correct |
2 ms |
492 KB |
Output is correct |
4 |
Correct |
1 ms |
492 KB |
Output is correct |
5 |
Correct |
2 ms |
492 KB |
Output is correct |
6 |
Correct |
1 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
364 KB |
Output is correct |
2 |
Correct |
1 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
1 ms |
364 KB |
Output is correct |
7 |
Correct |
1 ms |
364 KB |
Output is correct |
8 |
Correct |
1 ms |
500 KB |
Output is correct |
9 |
Correct |
1 ms |
364 KB |
Output is correct |
10 |
Correct |
1 ms |
492 KB |
Output is correct |
11 |
Correct |
1 ms |
492 KB |
Output is correct |
12 |
Correct |
2 ms |
492 KB |
Output is correct |
13 |
Correct |
1 ms |
364 KB |
Output is correct |
14 |
Correct |
1 ms |
384 KB |
Output is correct |
15 |
Correct |
2 ms |
492 KB |
Output is correct |
16 |
Correct |
1 ms |
492 KB |
Output is correct |
17 |
Correct |
2 ms |
492 KB |
Output is correct |
18 |
Correct |
1 ms |
364 KB |
Output is correct |
19 |
Correct |
1 ms |
364 KB |
Output is correct |
20 |
Correct |
1 ms |
364 KB |
Output is correct |
21 |
Correct |
3 ms |
876 KB |
Output is correct |
22 |
Correct |
4 ms |
876 KB |
Output is correct |
23 |
Correct |
3 ms |
876 KB |
Output is correct |
24 |
Correct |
3 ms |
876 KB |
Output is correct |
25 |
Correct |
3 ms |
876 KB |
Output is correct |
26 |
Correct |
3 ms |
876 KB |
Output is correct |
27 |
Correct |
3 ms |
876 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
620 KB |
Output is correct |
2 |
Correct |
3 ms |
620 KB |
Output is correct |
3 |
Correct |
4 ms |
620 KB |
Output is correct |
4 |
Correct |
2 ms |
620 KB |
Output is correct |
5 |
Correct |
2 ms |
620 KB |
Output is correct |
6 |
Correct |
3 ms |
620 KB |
Output is correct |
7 |
Correct |
3 ms |
620 KB |
Output is correct |
8 |
Correct |
4 ms |
620 KB |
Output is correct |
9 |
Correct |
5 ms |
620 KB |
Output is correct |
10 |
Correct |
5 ms |
620 KB |
Output is correct |
11 |
Correct |
4 ms |
620 KB |
Output is correct |
12 |
Correct |
3 ms |
620 KB |
Output is correct |
13 |
Correct |
4 ms |
620 KB |
Output is correct |
14 |
Correct |
2 ms |
620 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
620 KB |
Output is correct |
2 |
Correct |
3 ms |
620 KB |
Output is correct |
3 |
Correct |
4 ms |
620 KB |
Output is correct |
4 |
Correct |
2 ms |
620 KB |
Output is correct |
5 |
Correct |
2 ms |
620 KB |
Output is correct |
6 |
Correct |
3 ms |
620 KB |
Output is correct |
7 |
Correct |
3 ms |
620 KB |
Output is correct |
8 |
Correct |
4 ms |
620 KB |
Output is correct |
9 |
Correct |
5 ms |
620 KB |
Output is correct |
10 |
Correct |
5 ms |
620 KB |
Output is correct |
11 |
Correct |
4 ms |
620 KB |
Output is correct |
12 |
Correct |
3 ms |
620 KB |
Output is correct |
13 |
Correct |
4 ms |
620 KB |
Output is correct |
14 |
Correct |
2 ms |
620 KB |
Output is correct |
15 |
Correct |
311 ms |
31048 KB |
Output is correct |
16 |
Correct |
389 ms |
31816 KB |
Output is correct |
17 |
Correct |
501 ms |
33352 KB |
Output is correct |
18 |
Correct |
142 ms |
28488 KB |
Output is correct |
19 |
Correct |
372 ms |
31772 KB |
Output is correct |
20 |
Correct |
357 ms |
32712 KB |
Output is correct |
21 |
Correct |
361 ms |
32712 KB |
Output is correct |
22 |
Correct |
327 ms |
28708 KB |
Output is correct |
23 |
Correct |
382 ms |
34376 KB |
Output is correct |
24 |
Correct |
530 ms |
34004 KB |
Output is correct |
25 |
Correct |
525 ms |
33688 KB |
Output is correct |
26 |
Correct |
364 ms |
32584 KB |
Output is correct |
27 |
Correct |
343 ms |
31816 KB |
Output is correct |
28 |
Correct |
511 ms |
33736 KB |
Output is correct |
29 |
Correct |
456 ms |
33032 KB |
Output is correct |
30 |
Correct |
255 ms |
31208 KB |
Output is correct |
31 |
Correct |
514 ms |
33736 KB |
Output is correct |
32 |
Correct |
384 ms |
33224 KB |
Output is correct |
33 |
Correct |
527 ms |
33992 KB |
Output is correct |
34 |
Correct |
464 ms |
33736 KB |
Output is correct |
35 |
Correct |
359 ms |
31560 KB |
Output is correct |
36 |
Correct |
122 ms |
30408 KB |
Output is correct |
37 |
Correct |
539 ms |
34716 KB |
Output is correct |
38 |
Correct |
515 ms |
33480 KB |
Output is correct |
39 |
Correct |
529 ms |
33664 KB |
Output is correct |