Submission #430850

#TimeUsernameProblemLanguageResultExecution timeMemory
430850Rouge_HugoGondola (IOI14_gondola)C++14
25 / 100
11 ms1740 KiB
#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
#include "gondola.h"
using namespace std;
const int N=100090;
int vis[250090],r[N],yes[N],a[N],don[N];
int mn=1e9,mx=0;
int valid(int n, int A[])
{
    int w=0;
    for(int i=0; i<n; i++)
        a[i]=A[i];
    for(int i=0; i<n; i++)
        yes[a[i]]=i;
    for(int i=0; i<n; i++)
    {
        if(vis[a[i]])
            return 0;
        vis[a[i]]=1;
        mn=min(mn,a[i]);
        mx=max(mx,a[i]);
        if(mn==a[i])
            w=i;
    }
    if(mn>=n)
        return 1;
    int x=mn;
    for(int i=w+1; i<n; i++)
    {
        x++;
        if(a[i]>n)
        {
            a[i]=x;
            continue;
        }
        if(a[i]!=x)
            return 0;
    }
    x=a[n-1];
    for(int i=0; i<w; i++)
    {
        x++;
        if(a[i]>n)
        {
            a[i]=x;
            continue;
        }
        if(a[i]!=x)
            return 0;
    }
    return 1;
}
int replacement(int n, int a[], int r[])
{
    memset(yes,-1,sizeof yes);
    int w=0;
    for(int i=0; i<n; i++)
        yes[a[i]]=i;
    for(int i=0; i<n; i++)
    {
        mn=min(mn,a[i]);
        mx=max(mx,a[i]);
        if(mn==a[i])
            w=i;
    }
    int x=mn;
    if(w>-1){
    for(int i=w+1; i<n; i++)
    {
        x++;
        x%=n;
        if(x==0)
            x=1;
        a[i]=x;
    }
    for(int i=0; i<w; i++)
    {
        x++;
        x%=n;
        if(x==0)
            x=1;
        a[i]=x;
    }
    }
    int u=0;
    if(mn>n)
    {
        for(int i=0; i<n; i++)
        {
            yes[a[i]]=i+1;
        }
        for(int i=0; i<n; i++)
            a[i]=i+1;

    }
    int last=0;
    for(int i=n+1; i<=mx; i++)
    {
        if(yes[i]==-1)
        {
            while(don[last])
                last++;
            r[u]=a[last];
            u++;
            a[last]=i;
            continue;
        }
        r[u]=a[yes[i]];
        don[yes[i]]=1;
        u++;
    }
    return u;
}

int countReplacement(int n, int inputSeq[])
{
    return -3;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...