Submission #320716

#TimeUsernameProblemLanguageResultExecution timeMemory
320716knon0501Sorting (IOI15_sorting)C++14
100 / 100
495 ms25060 KiB
#include "sorting.h"
#include <bits/stdc++.h>
using namespace std;
const int MX=2e5+5;
int a[MX];
int b[MX];
int c[MX];
int d[MX];
int dd[MX];
int e[MX];
int p[MX];
int q[MX];
int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
    P[0] = 0;
	Q[0] = 0;
	int i,j,k;

	int ret=N;
	int lef=0;
	int rig=N-1;

	while(rig>=lef){
        int mid=(lef+rig)/2;
        for(i=0 ; i<N ; i++){
            a[i]=b[i]=S[i];
            e[a[i]]=i;
        }
        for(i=0  ; i<mid ; i++){
            p[i]=q[i]=0;
            swap(b[X[i]],b[Y[i]]);
        }
        for(i=0 ; i<N ; i++)
            c[b[i]]=i;
        for(i=0 ; i<N ; i++)
            d[i]=c[a[i]],dd[d[i]]=i;
        int j=0;
        for(i=0 ; i<mid ; i++){
            swap(dd[d[X[i]]],dd[d[Y[i]]]);
            swap(e[a[X[i]]],e[a[Y[i]]]);

            swap(d[X[i]],d[Y[i]]);
            swap(a[X[i]],a[Y[i]]);
            while(j<N && e[j]==dd[j]){
                j++;

            }
            if(j<N){
                int k=a[dd[j]];
                p[i]=e[j];
                q[i]=dd[j];
                swap(a[e[j]],a[dd[j]]);
                swap(e[j],e[k]);

            }
        }
        int isok=1;
        for(i=0 ; i<N ; i++){
   
            if(i!=a[i])isok=0;
        }
    
        if(isok==1){
            rig=mid-1;
            ret=mid;
            for(i=0 ; i<mid ; i++)
            {
                P[i]=p[i];
                Q[i]=q[i];
            }
        }
        else
            lef=mid+1;
	}


	return ret;
}


Compilation message (stderr)

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:36:13: warning: declaration of 'j' shadows a previous local [-Wshadow]
   36 |         int j=0;
      |             ^
sorting.cpp:16:8: note: shadowed declaration is here
   16 |  int i,j,k;
      |        ^
sorting.cpp:48:21: warning: declaration of 'k' shadows a previous local [-Wshadow]
   48 |                 int k=a[dd[j]];
      |                     ^
sorting.cpp:16:10: note: shadowed declaration is here
   16 |  int i,j,k;
      |          ^
sorting.cpp:16:8: warning: unused variable 'j' [-Wunused-variable]
   16 |  int i,j,k;
      |        ^
sorting.cpp:16:10: warning: unused variable 'k' [-Wunused-variable]
   16 |  int i,j,k;
      |          ^
sorting.cpp:13:39: warning: unused parameter 'M' [-Wunused-parameter]
   13 | int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
      |                                   ~~~~^
#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...