Submission #1190352

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

//static FILE *_inputFile, *_outputFile;

int num;
int s[200001],pos[200001];
int p[200001],q[200001];

void change(int i,int j)
{
    pos[s[i]]=j;
    pos[s[j]]=i;
    swap(s[i],s[j]);
}

void change1(int i,int j)
{
    p[num]=i;
    q[num]=j;

    pos[s[i]]=j;
    pos[s[j]]=i;

    swap(s[i],s[j]);
    num++;
    change(0,1);
}

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,s[i]=S[i];
    bool f=0;
    for(int i=0;i<N;i++)
        if(s[i]!=i)f=1;
    if(!f)return 0;

    change(0,1);
    f=0;
    for(int i=0;i<N;i++)
        if(s[i]!=i)f=1;
    if(!f)return 1;

    if(pos[0]>1)
        change1(0,pos[0]);

    if(pos[1]>1)
    {
        if(pos[0]==0)change1(1,pos[1]);
        else change1(0,pos[1]);
    }

    for(int i=2;i<N;i++)
    {
        if(s[i]!=i)
            change1(i,pos[i]);
    }
    if(pos[0]==0)num++;
    for(int i=0;i<num;i++)
        P[i]=p[i],Q[i]=q[i];
    return num;
}

/*int n,a[200001],x[200001],y[200001];
int pp[200001],qq[200001];
int main()
{
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
        for(int i=0;i<=100;i++)
            x[i]=0,y[i]=1;
    int ans=findSwapPairs(n,a,100,x,y,pp,qq);
    for(int i=0;i<ans;i++)
    {
        swap(a[0],a[1]);
        swap(a[p[i]],a[q[i]]);
        cout<<p[i]<<" "<<q[i]<<endl;
    }

    for(int i=0;i<n;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    cout<<ans<<endl;
}*/
#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...