# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
624160 | 2022-08-07T10:59:23 Z | mdn2002 | 정렬하기 (IOI15_sorting) | C++14 | 539 ms | 36884 KB |
#include "sorting.h" #include<bits/stdc++.h> using namespace std; int n , m , a [200005] , aa [200005] , x [600005] , y [600005] , dis [200005] , wrdis [200005] , wra [200005] , P [600005] , Q [600005]; bool ck ( int xx ) { for ( int i = 1 ; i <= n ; i ++ ) { a [i] = aa [i]; wra [ a [i] ] = i; } int mm = xx; for ( int i = 1 ; i <= n ; i ++ ) { dis [i] = i; wrdis [ dis [i] ] = i; } for ( int j = mm - 1 ; j >= 0 ; j -- ) { swap ( dis [ x [j] ] , dis [ y [j] ] ); swap ( wrdis [ dis [ x [j] ] ] , wrdis [ dis [ y [j] ] ] ); } deque < int > s; for ( int i = 1 ; i <= n ; i ++ ) { if ( dis [i] != a [i] ) s . push_back ( dis [i] ); } for ( int i = 1 ; i <= mm ; i ++ ) { swap ( a [ x [ i - 1 ] ] , a [ y [ i - 1 ] ] ); swap ( wra [ a [ x [ i - 1 ] ] ] , wra [ a [ y [ i - 1 ] ] ] ); swap ( dis [ x [ i - 1 ] ] , dis [ y [ i - 1 ] ] ); swap ( wrdis [ dis [ x [ i - 1 ] ] ] , wrdis [ dis [ y [ i - 1 ] ] ] ); while ( s . size () ) { int x = * s . begin () , z = wra [x]; s . pop_front (); if ( dis [ wrdis [x] ] == a [ wrdis [x] ] ) continue; swap ( a [ wrdis [x] ] , a [z] ); swap ( wra [ a [ wrdis [x] ] ] , wra [ a [z] ] ); break; } } int f = 0; for ( int i = 1 ; i <= n ; i ++ ) { if ( a [i] != i ) f = 1; } if ( f == 0 ) return 1; return 0; } int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) { n = N; for ( int i = 1 ; i <= n ; i ++ ) { a [i] = S [ i - 1 ]; a [i] ++; aa [i] = a [i]; } m = M; for ( int i = 0 ; i < m ; i ++ ) { x [i] = X [i] , y [i] = Y [i]; x [i] ++ , y [i] ++; } int l = 0 , rr = m + 1 , mid; while ( l < rr ) { mid = ( l + rr ) / 2; if ( ck ( mid ) ) rr = mid; else l = mid + 1; } m = l; for ( int i = 1 ; i <= n ; i ++ ) { a [i] = aa [i]; wra [ a [i] ] = i; } for ( int i = 1 ; i <= n ; i ++ ) { dis [i] = i; wrdis [i] = i; } for ( int j = m - 1 ; j >= 0 ; j -- ) { swap ( dis [ x [j] ] , dis [ y [j] ] ); swap ( wrdis [ dis [ x [j] ] ] , wrdis [ dis [ y [j] ] ] ); } set < int > s; for ( int i = 1 ; i <= n ; i ++ ) { if ( dis [i] != a [i] ) s . insert ( dis [i] ); } int r = 0; for ( int i = 1 ; i <= m ; i ++ ) { swap ( a [ x [ i - 1 ] ] , a [ y [ i - 1 ] ] ); swap ( wra [ a [ x [ i - 1 ] ] ] , wra [ a [ y [ i - 1 ] ] ] ); swap ( dis [ x [ i - 1 ] ] , dis [ y [ i - 1 ] ] ); swap ( wrdis [ dis [ x [ i - 1 ] ] ] , wrdis [ dis [ y [ i - 1 ] ] ] ); P [ i - 1 ] = -1 , Q [ i - 1 ] = -1; if ( s . size () ) { int x = * s . begin () , z = wra [x]; s . erase ( s . begin () ); swap ( a [ wrdis [x] ] , a [z] ); swap ( wra [ a [ wrdis [x] ] ] , wra [ a [z] ] ); if ( a [z] == dis [z] ) s . erase ( s . lower_bound ( dis [z] ) ); P [ i - 1 ] = wrdis [x] - 1 , Q [ i - 1 ] = z - 1; r ++; } if ( P [ i - 1 ] == -1 ) { P [ i - 1 ] = 0; Q [ i - 1 ] = 0; r ++; } } return r; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | Output is correct |
2 | Correct | 0 ms | 340 KB | Output is correct |
3 | Correct | 0 ms | 340 KB | Output is correct |
4 | Correct | 0 ms | 340 KB | Output is correct |
5 | Correct | 0 ms | 264 KB | Output is correct |
6 | Correct | 0 ms | 340 KB | Output is correct |
7 | Correct | 0 ms | 340 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | Output is correct |
2 | Correct | 0 ms | 340 KB | Output is correct |
3 | Correct | 0 ms | 340 KB | Output is correct |
4 | Correct | 0 ms | 340 KB | Output is correct |
5 | Correct | 0 ms | 264 KB | Output is correct |
6 | Correct | 0 ms | 340 KB | Output is correct |
7 | Correct | 0 ms | 340 KB | Output is correct |
8 | Correct | 0 ms | 340 KB | Output is correct |
9 | Correct | 0 ms | 340 KB | Output is correct |
10 | Correct | 1 ms | 340 KB | Output is correct |
11 | Correct | 1 ms | 340 KB | Output is correct |
12 | Correct | 1 ms | 340 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 340 KB | Output is correct |
2 | Correct | 1 ms | 340 KB | Output is correct |
3 | Correct | 1 ms | 340 KB | Output is correct |
4 | Correct | 1 ms | 340 KB | Output is correct |
5 | Correct | 1 ms | 340 KB | Output is correct |
6 | Correct | 0 ms | 340 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | Output is correct |
2 | Correct | 0 ms | 340 KB | Output is correct |
3 | Correct | 0 ms | 340 KB | Output is correct |
4 | Correct | 0 ms | 340 KB | Output is correct |
5 | Correct | 0 ms | 264 KB | Output is correct |
6 | Correct | 0 ms | 340 KB | Output is correct |
7 | Correct | 0 ms | 340 KB | Output is correct |
8 | Correct | 0 ms | 340 KB | Output is correct |
9 | Correct | 0 ms | 340 KB | Output is correct |
10 | Correct | 1 ms | 340 KB | Output is correct |
11 | Correct | 1 ms | 340 KB | Output is correct |
12 | Correct | 1 ms | 340 KB | Output is correct |
13 | Correct | 1 ms | 340 KB | Output is correct |
14 | Correct | 1 ms | 340 KB | Output is correct |
15 | Correct | 1 ms | 340 KB | Output is correct |
16 | Correct | 1 ms | 340 KB | Output is correct |
17 | Correct | 1 ms | 340 KB | Output is correct |
18 | Correct | 0 ms | 340 KB | Output is correct |
19 | Correct | 0 ms | 340 KB | Output is correct |
20 | Correct | 0 ms | 340 KB | Output is correct |
21 | Correct | 2 ms | 596 KB | Output is correct |
22 | Correct | 2 ms | 596 KB | Output is correct |
23 | Correct | 2 ms | 596 KB | Output is correct |
24 | Correct | 2 ms | 596 KB | Output is correct |
25 | Correct | 2 ms | 596 KB | Output is correct |
26 | Correct | 1 ms | 596 KB | Output is correct |
27 | Correct | 2 ms | 604 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 604 KB | Output is correct |
2 | Correct | 3 ms | 604 KB | Output is correct |
3 | Correct | 3 ms | 604 KB | Output is correct |
4 | Correct | 1 ms | 476 KB | Output is correct |
5 | Correct | 2 ms | 476 KB | Output is correct |
6 | Correct | 2 ms | 476 KB | Output is correct |
7 | Correct | 2 ms | 468 KB | Output is correct |
8 | Correct | 3 ms | 596 KB | Output is correct |
9 | Correct | 6 ms | 596 KB | Output is correct |
10 | Correct | 3 ms | 488 KB | Output is correct |
11 | Correct | 3 ms | 596 KB | Output is correct |
12 | Correct | 2 ms | 468 KB | Output is correct |
13 | Correct | 3 ms | 596 KB | Output is correct |
14 | Correct | 1 ms | 468 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 604 KB | Output is correct |
2 | Correct | 3 ms | 604 KB | Output is correct |
3 | Correct | 3 ms | 604 KB | Output is correct |
4 | Correct | 1 ms | 476 KB | Output is correct |
5 | Correct | 2 ms | 476 KB | Output is correct |
6 | Correct | 2 ms | 476 KB | Output is correct |
7 | Correct | 2 ms | 468 KB | Output is correct |
8 | Correct | 3 ms | 596 KB | Output is correct |
9 | Correct | 6 ms | 596 KB | Output is correct |
10 | Correct | 3 ms | 488 KB | Output is correct |
11 | Correct | 3 ms | 596 KB | Output is correct |
12 | Correct | 2 ms | 468 KB | Output is correct |
13 | Correct | 3 ms | 596 KB | Output is correct |
14 | Correct | 1 ms | 468 KB | Output is correct |
15 | Correct | 301 ms | 24776 KB | Output is correct |
16 | Correct | 341 ms | 25244 KB | Output is correct |
17 | Correct | 513 ms | 26600 KB | Output is correct |
18 | Correct | 117 ms | 22024 KB | Output is correct |
19 | Correct | 364 ms | 30100 KB | Output is correct |
20 | Correct | 385 ms | 31240 KB | Output is correct |
21 | Correct | 348 ms | 31316 KB | Output is correct |
22 | Correct | 303 ms | 30560 KB | Output is correct |
23 | Correct | 331 ms | 36292 KB | Output is correct |
24 | Correct | 539 ms | 35748 KB | Output is correct |
25 | Correct | 532 ms | 35448 KB | Output is correct |
26 | Correct | 295 ms | 30812 KB | Output is correct |
27 | Correct | 271 ms | 29136 KB | Output is correct |
28 | Correct | 441 ms | 35528 KB | Output is correct |
29 | Correct | 447 ms | 34716 KB | Output is correct |
30 | Correct | 258 ms | 28584 KB | Output is correct |
31 | Correct | 523 ms | 35656 KB | Output is correct |
32 | Correct | 310 ms | 35016 KB | Output is correct |
33 | Correct | 504 ms | 35832 KB | Output is correct |
34 | Correct | 348 ms | 35644 KB | Output is correct |
35 | Correct | 348 ms | 29860 KB | Output is correct |
36 | Correct | 72 ms | 22924 KB | Output is correct |
37 | Correct | 513 ms | 36884 KB | Output is correct |
38 | Correct | 493 ms | 35544 KB | Output is correct |
39 | Correct | 484 ms | 35616 KB | Output is correct |