Submission #1204789

#TimeUsernameProblemLanguageResultExecution timeMemory
1204789m5588ohammedGondola (IOI14_gondola)C++20
75 / 100
11 ms2120 KiB
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
int valid(int n, int arr[])
{
    vector <int> v;
    long long mn=1e18,idx=0;
    for(int i=0;i<n;i++){
        if(arr[i]<mn){
            mn=arr[i];
            idx=i;
        }
    }
    int cnt=1;
    for(int i=idx;i<idx+n;i++){
        if(arr[i%n]>n) {
            arr[i%n]=cnt++;
        }
        if(arr[i%n]!=cnt) return 0;
        cnt++;
    }
    return 1;
}

//----------------------

int replacement(int n, int arr[], int rep[])
{
    vector <int> v;
    long long idx=0;
    long long mx=0,idx2=0;
    for(int i=0;i<n;i++){
        if(arr[i]<n){
            idx=(i-arr[i]+1+n)%n;    
        }
        if(arr[i]>mx){
            mx=arr[i];
            idx2=i;
        }
    }
    for(int i=0;i<mx-n;i++) rep[i]=-1;
    int cnt=1;
    for(int i=idx;i<idx+n;i++){
        if(arr[i%n]!=cnt){
            rep[arr[i%n]-n-1]=i%n;
        }
        arr[i%n]=cnt;
        cnt++;
    }
    for(int i=0;i<mx-n;i++) if(rep[i]==-1) rep[i]=idx2;
    int num=n+1;
    for(int i=0;i<mx-n;i++){
        //cout<<rep[i]<<" ";
        int x=arr[rep[i]];
        arr[rep[i]]=num;
        rep[i]=x;
        num++;
    }
    //cout<<endl;
    return mx-n;
}

//----------------------
#define mod 1000000009
int vis[1000001];
int countReplacement(int n, int arr[])
{
    int mx=0;
    for(int i=0;i<n;i++) mx=max(arr[i],mx);
    long long cnt=0,ans=1;
    for(int i=0;i<n;i++){
        if(arr[i]>n){
            vis[arr[i]]=1;
            cnt++;
        }
    }
    for(int i=n+1;i<=mx;i++){
        if(vis[i]==0){
            ans*=cnt;
            ans%=mod;
        }
        else cnt--;
    }
    return ans;
}
#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...