답안 #16643

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
16643 2015-09-02T11:34:45 Z khsoo01 정렬하기 (IOI15_sorting) C++
74 / 100
58 ms 19888 KB
#include<bits/stdc++.h>
#include "sorting.h"
using namespace std;
int n,m,cur[200005],def[200005],x[200005],y[200005];
int p[200005],q[20005],where[200005],vis[200005],cnt,ans;

void Swap(int A,int B) {
    int tmp;
    tmp=where[cur[A]];
    where[cur[A]]=where[cur[B]];
    where[cur[B]]=tmp;
    tmp=cur[A];
    cur[A]=cur[B];
    cur[B]=tmp;
}

int param(int s,int e) {
    int piv=(s+e)/2,i;
    for(i=0;i<n;i++) {
        cur[i]=def[i];
        where[cur[i]]=i;
    }
    for(i=0;i<piv;i++) {
        Swap(x[i],y[i]);
    }
    memset(vis,0,sizeof(vis));
    cnt=0;
    for(i=0;i<n;i++) {
        while(cur[i]!=i) {
            p[cnt]=cur[i];
            q[cnt]=cur[cur[i]];
            Swap(i,cur[i]);
            cnt++;
        }
    }
    if(s==e)return s;
    if(cnt<=piv) return param(s,piv);
    return param(piv+1,e);
}

int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
    int i; n=N; m=M;
    for(i=0;i<n;i++) def[i]=S[i];
    for(i=0;i<m;i++) {
        x[i]=X[i];
        y[i]=Y[i];
    }
    ans=param(0,m);
    for(i=0;i<n;i++) {
        cur[i]=def[i];
        where[cur[i]]=i;
    }
    for(i=0;i<cnt;i++) {
        Swap(x[i],y[i]);
        P[i]=where[p[i]]; Q[i]=where[q[i]];
        Swap(where[p[i]],where[q[i]]);
    }
    for(i=cnt;i<ans;i++) {P[i]=0;Q[i]=0;}
    return ans;
}

# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 1152 KB Output is correct
2 Correct 3 ms 1152 KB Output is correct
3 Correct 3 ms 1152 KB Output is correct
4 Correct 4 ms 1152 KB Output is correct
5 Correct 3 ms 1152 KB Output is correct
6 Correct 3 ms 1152 KB Output is correct
7 Correct 3 ms 1152 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 1152 KB Output is correct
2 Correct 3 ms 1152 KB Output is correct
3 Correct 3 ms 1152 KB Output is correct
4 Correct 4 ms 1152 KB Output is correct
5 Correct 3 ms 1152 KB Output is correct
6 Correct 3 ms 1152 KB Output is correct
7 Correct 3 ms 1152 KB Output is correct
8 Correct 3 ms 1152 KB Output is correct
9 Correct 3 ms 1152 KB Output is correct
10 Correct 4 ms 1152 KB Output is correct
11 Correct 3 ms 1280 KB Output is correct
12 Correct 4 ms 1200 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 1152 KB Output is correct
2 Correct 4 ms 1152 KB Output is correct
3 Correct 4 ms 1152 KB Output is correct
4 Correct 4 ms 1152 KB Output is correct
5 Correct 3 ms 1280 KB Output is correct
6 Correct 3 ms 1152 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 1152 KB Output is correct
2 Correct 3 ms 1152 KB Output is correct
3 Correct 3 ms 1152 KB Output is correct
4 Correct 4 ms 1152 KB Output is correct
5 Correct 3 ms 1152 KB Output is correct
6 Correct 3 ms 1152 KB Output is correct
7 Correct 3 ms 1152 KB Output is correct
8 Correct 3 ms 1152 KB Output is correct
9 Correct 3 ms 1152 KB Output is correct
10 Correct 4 ms 1152 KB Output is correct
11 Correct 3 ms 1280 KB Output is correct
12 Correct 4 ms 1200 KB Output is correct
13 Correct 3 ms 1152 KB Output is correct
14 Correct 4 ms 1152 KB Output is correct
15 Correct 4 ms 1152 KB Output is correct
16 Correct 4 ms 1152 KB Output is correct
17 Correct 3 ms 1280 KB Output is correct
18 Correct 3 ms 1152 KB Output is correct
19 Correct 3 ms 1152 KB Output is correct
20 Correct 4 ms 1124 KB Output is correct
21 Correct 4 ms 1408 KB Output is correct
22 Correct 5 ms 1456 KB Output is correct
23 Correct 4 ms 1408 KB Output is correct
24 Correct 4 ms 1408 KB Output is correct
25 Correct 4 ms 1408 KB Output is correct
26 Correct 4 ms 1408 KB Output is correct
27 Correct 5 ms 1408 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 1280 KB Output is correct
2 Correct 4 ms 1280 KB Output is correct
3 Correct 4 ms 1280 KB Output is correct
4 Correct 4 ms 1280 KB Output is correct
5 Correct 4 ms 1280 KB Output is correct
6 Correct 4 ms 1280 KB Output is correct
7 Correct 4 ms 1328 KB Output is correct
8 Correct 5 ms 1280 KB Output is correct
9 Correct 4 ms 1356 KB Output is correct
10 Correct 4 ms 1280 KB Output is correct
11 Correct 5 ms 1280 KB Output is correct
12 Correct 4 ms 1280 KB Output is correct
13 Correct 5 ms 1280 KB Output is correct
14 Correct 3 ms 1280 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 1280 KB Output is correct
2 Correct 4 ms 1280 KB Output is correct
3 Correct 4 ms 1280 KB Output is correct
4 Correct 4 ms 1280 KB Output is correct
5 Correct 4 ms 1280 KB Output is correct
6 Correct 4 ms 1280 KB Output is correct
7 Correct 4 ms 1328 KB Output is correct
8 Correct 5 ms 1280 KB Output is correct
9 Correct 4 ms 1356 KB Output is correct
10 Correct 4 ms 1280 KB Output is correct
11 Correct 5 ms 1280 KB Output is correct
12 Correct 4 ms 1280 KB Output is correct
13 Correct 5 ms 1280 KB Output is correct
14 Correct 3 ms 1280 KB Output is correct
15 Runtime error 58 ms 19888 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Halted 0 ms 0 KB -