Submission #760866

# Submission time Handle Problem Language Result Execution time Memory
760866 2023-06-18T19:37:39 Z Khizri Gondola (IOI14_gondola) C++17
75 / 100
1000 ms 5408 KB
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define F first
#define S second
#define INF 1e18
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define pii pair<int,int>
#define pll pair<ll,ll>
#define OK cout<<"Ok"<<endl;
#define MOD (ll)(1e9+9)
const int mxn=2e5+5;
int n,color[mxn],arr[mxn];
int valid(int n, int vr[])
{
    for(int i=0;i<n;i++){
        arr[i]=vr[i];
    }
    set<int>st;
    for(int i=0;i<n;i++){
        st.insert(arr[i]);
    }
    if(st.size()!=n) return 0;
    int k=n+1,idx=0;
    for(int i=0;i<n;i++){
        if(arr[i]>n) continue;
        if(arr[i]<k){
            k=arr[i];
            idx=i;
        }
    }
    for(int i=idx;i<n;i++){
        if(arr[i]>n){
            arr[i]=k;
        }
        if(arr[i]!=k) return 0;
        k++;
        k%=(n+1);
        if(k==0) k++;
    }
    for(int i=0;i<idx;i++){
        if(arr[i]>n){
            arr[i]=k;
        }
        if(arr[i]!=k) return 0;
        k++;
        k%=(n+1);
        if(k==0) k++;
    }
    return 1;
}

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

int replacement(int n, int arr[], int replacementSeq[])
{
    int k=0,mn=n+1,idx=0;
    for(int i=0;i<n;i++){
        if(arr[i]>k){
            k=arr[i];
        }
        if(arr[i]<mn){
            mn=arr[i];
            idx=i;
        }
    }
    if(mn>n){
        set<pii>st;
        for(int i=0;i<n;i++){
            st.insert({arr[i],i+1});
        }
        int cnt=0;
        int nxt=n;
        for(auto [l,id]:st){
            replacementSeq[cnt++]=id;
            nxt++;
            while(nxt<l){
                replacementSeq[cnt++]=nxt;
                nxt++;
            }
        }
        return cnt;
    }
    for(int i=idx;i<n;i++){
        if(arr[i]>n){
            color[i]=mn;
        }
        else{
            color[i]=arr[i];
        }
        mn++;
        mn%=(n+1);
        if(mn==0) mn++;
    }
    for(int i=0;i<idx;i++){
        if(arr[i]>n){
            color[i]=mn;
        }
        else{
            color[i]=arr[i];
        }
        mn++;
        mn%=(n+1);
        if(mn==0) mn++;
    }
    set<pii>st;
    for(int i=0;i<n;i++){
        if(color[i]<arr[i]){
            st.insert({arr[i],color[i]});
        }
    }
    int cnt=0;
    int nxt=n;
    for(auto [l,id]:st){
        replacementSeq[cnt++]=id;
        nxt++;
        while(nxt<l){
            replacementSeq[cnt++]=nxt;
            nxt++;
        }
    }
    return cnt;
}

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

int countReplacement(int n, int arr[])
{
    int k=valid(n,arr);
    if(k==0) return k;
    set<int>st;
    int mx=0;
    for(int i=0;i<n;i++){
        st.insert(arr[i]);
        mx=max(arr[i],mx);
    }
    ll ans=1;
    for(int i=n+1;i<=mx;i++){
        if(st.count(i)) continue;
        ll cnt=0;
        for(int j=0;j<n;j++){
            if(arr[j]>i){
                cnt++;
            }
        }
        ans=(ans*cnt)%MOD;
    }
    return ans;
}

Compilation message

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:26:17: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   26 |     if(st.size()!=n) return 0;
      |        ~~~~~~~~~^~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 308 KB Output is correct
4 Correct 0 ms 312 KB Output is correct
5 Correct 0 ms 316 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 312 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 8 ms 2516 KB Output is correct
7 Correct 23 ms 4396 KB Output is correct
8 Correct 16 ms 4524 KB Output is correct
9 Correct 6 ms 1600 KB Output is correct
10 Correct 19 ms 5224 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 308 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 8 ms 2516 KB Output is correct
7 Correct 19 ms 4508 KB Output is correct
8 Correct 16 ms 4548 KB Output is correct
9 Correct 5 ms 1620 KB Output is correct
10 Correct 19 ms 5288 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 10 ms 2388 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 30 ms 5408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 312 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 312 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 316 KB Output is correct
3 Correct 1 ms 308 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 6 ms 1364 KB Output is correct
12 Correct 7 ms 1416 KB Output is correct
13 Correct 16 ms 2848 KB Output is correct
14 Correct 6 ms 1364 KB Output is correct
15 Correct 18 ms 3044 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 312 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Execution timed out 1073 ms 4692 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 308 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Execution timed out 1082 ms 4672 KB Time limit exceeded
10 Halted 0 ms 0 KB -