Submission #69268

#TimeUsernameProblemLanguageResultExecution timeMemory
69268yusufakeSorting (IOI15_sorting)C++98
0 / 100
3 ms640 KiB
#include<bits/stdc++.h>
using namespace std;
#include "sorting.h"

#define pb push_back
#define mp make_pair
vector < int > V[1003];
pair < int , int > mx;
int findSwapPairs(int n, int *S, int m, int *X, int *Y, int *P, int *Q){
    int i,j;
    for(i=0;i<m;i++){
        V[ X[i] ].pb(i);
        V[ Y[i] ].pb(i);
    }
    for(j=0;j<n;j++) V[j].pb(m);
    for(i=0;i<m;i++){
        swap(S[ X[i] ], S[ Y[i] ]);
        mx = mp(-1,-1);
        for(j=0;j<n;j++)
            if(S[j] != j)
                mx = max(mx , mp(*upper_bound(V[ S[j] ].begin() , V[ S[j] ].end() , i),j));
        if(mx.first == -1) return i+1;
        j = mx.second;
        P[i] = j;
        Q[i] = S[j];
        swap(S[j],S[ S[j] ]);
    }
    return m;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...