# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1027635 | 2024-07-19T08:08:13 Z | MarwenElarbi | Gondola (IOI14_gondola) | C++17 | 69 ms | 9580 KB |
#include <bits/stdc++.h> #include "gondola.h" using namespace std; #define pb push_back #define se second #define fi first const int nax=5e5+5; const int MOD=1e9+9; int valid(int n, int inputSeq[]) { vector<pair<int,int>> tab; bool test=true; set<int> stt; for (int i = 0; i < n; ++i) { stt.insert(inputSeq[i]); } test&=(stt.size()==n); int cnt=-1e9; for (int i = 0; i < n; ++i) { if(inputSeq[i]<=n){ cnt=(inputSeq[i]-(i+1)+n)%n; } } if(cnt==-1e9) return test; for (int i = 0; i < n; ++i) { if(inputSeq[i]<=n){ if((inputSeq[i]-(i+1)+n)%n!=cnt) test=false; } } return test; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { vector<pair<int,int>> tab; for (int i = 0; i < n; ++i) { if(gondolaSeq[i]>n){ tab.pb({gondolaSeq[i],i+1}); } } if(tab.size()==n){ sort(tab.begin(),tab.end()); int cnt=n; int cur=0; for (int i = 0; i < tab.size(); ++i) { replacementSeq[cur++]=tab[i].se; cnt++; while(cnt<tab[i].fi){ replacementSeq[cur++]=cnt++; } } return cur; }else{ int a=0; for (int i = 0; i < n; ++i) { if(gondolaSeq[i]<=n) a=(gondolaSeq[i]-(i+1)+n)%n; } sort(tab.begin(),tab.end()); int cnt=n; int cur=0; for (int i = 0; i < tab.size(); ++i) { replacementSeq[cur++]=((tab[i].se+a)%n == 0 ? n : (tab[i].se+a)%n); cnt++; while(cnt<tab[i].fi){ replacementSeq[cur++]=cnt++; } } return cur; } } //---------------------- long long binpow(long long x,long long m){ x%=MOD; long long res=1; while(m){ if(m%2) res=res*x%MOD; x=x*x%MOD; m/=2; } return res; } int countReplacement(int n, int inputSeq[]) { long long cur=1; set<int> st; if(!valid(n,inputSeq)) return 0; for (int i = 0; i < n; ++i) { st.insert(i); } for (int i = 0; i < n; ++i) { if(inputSeq[i]<=n) st.erase(inputSeq[i]); } if(st.size()==0) return 1; set<int> stt; for (int i = 0; i < n; ++i) { if(inputSeq[i]>n) stt.insert(inputSeq[i]); } int cnt=n; if(stt.size()==n) cur=n; while(stt.size()){ //cout <<cnt<<endl; cur*=binpow(stt.size(),*stt.begin()-1-cnt)%MOD; cur%=MOD; cnt=*stt.begin(); stt.erase(*stt.begin()); } return cur; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | Output is correct |
2 | Correct | 1 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 348 KB | Output is correct |
4 | Correct | 1 ms | 348 KB | Output is correct |
5 | Correct | 0 ms | 348 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 348 KB | Output is correct |
4 | Correct | 0 ms | 348 KB | Output is correct |
5 | Correct | 1 ms | 600 KB | Output is correct |
6 | Correct | 7 ms | 2140 KB | Output is correct |
7 | Correct | 19 ms | 3756 KB | Output is correct |
8 | Correct | 12 ms | 3932 KB | Output is correct |
9 | Correct | 5 ms | 1368 KB | Output is correct |
10 | Correct | 19 ms | 4444 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 348 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 348 KB | Output is correct |
4 | Correct | 0 ms | 348 KB | Output is correct |
5 | Correct | 0 ms | 348 KB | Output is correct |
6 | Correct | 8 ms | 2140 KB | Output is correct |
7 | Correct | 21 ms | 3676 KB | Output is correct |
8 | Correct | 14 ms | 3928 KB | Output is correct |
9 | Correct | 5 ms | 1372 KB | Output is correct |
10 | Correct | 17 ms | 4444 KB | Output is correct |
11 | Correct | 1 ms | 348 KB | Output is correct |
12 | Correct | 0 ms | 348 KB | Output is correct |
13 | Correct | 9 ms | 2140 KB | Output is correct |
14 | Correct | 0 ms | 348 KB | Output is correct |
15 | Correct | 25 ms | 4612 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 344 KB | Output is correct |
3 | Correct | 1 ms | 348 KB | Output is correct |
4 | Correct | 0 ms | 348 KB | Output is correct |
5 | Correct | 0 ms | 348 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 348 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 444 KB | Output is correct |
4 | Correct | 0 ms | 348 KB | Output is correct |
5 | Correct | 0 ms | 444 KB | Output is correct |
6 | Correct | 0 ms | 348 KB | Output is correct |
7 | Correct | 0 ms | 360 KB | Output is correct |
8 | Correct | 1 ms | 344 KB | Output is correct |
9 | Correct | 1 ms | 348 KB | Output is correct |
10 | Correct | 0 ms | 348 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 348 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 344 KB | Output is correct |
4 | Correct | 1 ms | 348 KB | Output is correct |
5 | Correct | 0 ms | 440 KB | Output is correct |
6 | Correct | 0 ms | 348 KB | Output is correct |
7 | Correct | 0 ms | 348 KB | Output is correct |
8 | Correct | 1 ms | 348 KB | Output is correct |
9 | Correct | 0 ms | 348 KB | Output is correct |
10 | Correct | 1 ms | 348 KB | Output is correct |
11 | Correct | 5 ms | 1116 KB | Output is correct |
12 | Correct | 6 ms | 1076 KB | Output is correct |
13 | Correct | 9 ms | 1436 KB | Output is correct |
14 | Correct | 5 ms | 1116 KB | Output is correct |
15 | Correct | 12 ms | 2388 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 348 KB | Output is correct |
2 | Correct | 1 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 348 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 348 KB | Output is correct |
2 | Correct | 1 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 348 KB | Output is correct |
4 | Correct | 0 ms | 348 KB | Output is correct |
5 | Correct | 0 ms | 600 KB | Output is correct |
6 | Correct | 0 ms | 348 KB | Output is correct |
7 | Correct | 0 ms | 348 KB | Output is correct |
8 | Correct | 0 ms | 444 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
3 | Correct | 0 ms | 348 KB | Output is correct |
4 | Correct | 0 ms | 348 KB | Output is correct |
5 | Correct | 1 ms | 348 KB | Output is correct |
6 | Correct | 1 ms | 348 KB | Output is correct |
7 | Correct | 0 ms | 348 KB | Output is correct |
8 | Correct | 0 ms | 348 KB | Output is correct |
9 | Correct | 49 ms | 5944 KB | Output is correct |
10 | Correct | 36 ms | 4700 KB | Output is correct |
11 | Correct | 16 ms | 2396 KB | Output is correct |
12 | Correct | 17 ms | 2816 KB | Output is correct |
13 | Correct | 3 ms | 860 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 348 KB | Output is correct |
2 | Correct | 1 ms | 412 KB | Output is correct |
3 | Correct | 0 ms | 348 KB | Output is correct |
4 | Correct | 1 ms | 344 KB | Output is correct |
5 | Correct | 0 ms | 348 KB | Output is correct |
6 | Correct | 0 ms | 348 KB | Output is correct |
7 | Correct | 1 ms | 348 KB | Output is correct |
8 | Correct | 0 ms | 348 KB | Output is correct |
9 | Correct | 56 ms | 5892 KB | Output is correct |
10 | Correct | 38 ms | 4564 KB | Output is correct |
11 | Correct | 12 ms | 2396 KB | Output is correct |
12 | Correct | 16 ms | 2880 KB | Output is correct |
13 | Correct | 3 ms | 860 KB | Output is correct |
14 | Correct | 58 ms | 8520 KB | Output is correct |
15 | Correct | 69 ms | 9580 KB | Output is correct |
16 | Correct | 9 ms | 2392 KB | Output is correct |
17 | Correct | 41 ms | 6488 KB | Output is correct |
18 | Correct | 21 ms | 3932 KB | Output is correct |