Submission #1190278

#TimeUsernameProblemLanguageResultExecution timeMemory
1190278simona1230Sorting (IOI15_sorting)C++20
0 / 100
0 ms320 KiB
#include "sorting.h"
#include <bits/stdc++.h>
using namespace std;

static FILE *_inputFile, *_outputFile;

int num;
int pos[200001];
int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[])
{
    for(int i=0;i<N;i++)
        pos[S[i]]=i;
    if(pos[0]!=0)
    {
        pos[S[X[num]]]=Y[num];
        pos[S[Y[num]]]=X[num];
        swap(S[X[num]],S[Y[num]]);
        P[num]=pos[0];
        Q[num]=0;
        pos[0]=0;
        pos[S[0]]=pos[0];
        swap(S[0],S[pos[0]]);
        num++;
    }

    if(pos[1]>1)
    {
        pos[S[X[num]]]=Y[num];
        pos[S[Y[num]]]=X[num];
        swap(S[X[num]],S[Y[num]]);
        P[num]=pos[1];
        Q[num]=0;
        pos[1]=0;
        pos[S[0]]=pos[1];
        swap(S[0],S[pos[1]]);
        num++;
    }

    for(int i=0;i<N;i++)
        fprintf(_outputFile, "%d ", pos[S[i]]);

    for(int i=2;i<N;i++)
    {
        if(S[i]!=i)
        {
            pos[S[X[num]]]=Y[num];
            pos[S[Y[num]]]=X[num];
            swap(S[X[num]],S[Y[num]]);
            P[num]=pos[i];
            Q[num]=i;
            pos[S[i]]=pos[i];
            swap(S[pos[i]],S[i]);
            num++;
        }
    }
    if(pos[0]!=0)
        num++;

	return num;
}


#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...