## Submission #582324

# Submission time Handle Problem Language Result Execution time Memory
582324 2022-06-23T16:25:39 Z wdjpng Gondola (IOI14_gondola) C++17
75 / 100
32 ms 4044 KB
```#include "gondola.h"
#include <bits/stdc++.h>

#define int long long
#define rep(i,n) for(int i = 0; i < ((int) n); i++)
#define all(a) a.begin(), a.end()

using namespace std;
int N =1e5+1;

signed valid(signed n, signed inputSeq[])
{
int minn = 251000, mini=-1;
rep(i,n) if((int)inputSeq[i]<minn) {minn=inputSeq[i]; mini=i;}
vector<int>x(n);
rep(i,n) x[(i+minn-1+n)%n]=inputSeq[(i+mini)%n];
rep(i,n) if(x[i]!=i+1&&x[i]<=n) return 0;
vector<int>doub;
rep(i,n) if(x[i]>n) doub.push_back(x[i]);
sort(all(doub));
rep(i,doub.size()-1) if(doub[i]==doub[i+1]) return 0;
return 1;
}

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

signed replacement(signed n, signed gondseq[], signed replacementSeq[])
{
int minn = 251000, mini=-1;
rep(i,n) if((int)gondseq[i]<minn) {minn=gondseq[i]; mini=i;}
vector<int>x(n);
rep(i,n) x[(i+minn-1+n)%n]=gondseq[(i+mini)%n];

int cur = 0;
int maxx = n;
rep(i,n) maxx=max(maxx,x[i]);
map<int,int>mp;
rep(i,n) if(x[i]>n) mp[x[i]]=i;
auto it = mp.end();
if(mp.size()) it--;

vector<int>out;
vector<int>help(n);
rep(i,n) help[i]=i+1;
for(int i = n+1; i <= maxx; i++)
{
if(mp.count(i)) {out.push_back(help[mp[i]]); help[mp[i]]=i;}
else {out.push_back(help[(*it).second]); help[(*it).second]=i;}
}

rep(i,maxx-n) replacementSeq[i]=out[i];
return maxx-n;
}

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

const int MOD = 1e9+9;
int fastpow(int a, int p)
{
if(p==0) return 1;
int res = fastpow(a,p/2);
res=(res*res)%MOD;
if(p&1) res=(res*a)%MOD;
return res;
}

signed countReplacement(signed n, signed inputSeq[])
{
int minn = 251000, mini=-1;
rep(i,n) if((int)inputSeq[i]<minn) {minn=inputSeq[i]; mini=i;}
vector<int>x(n);
rep(i,n) x[(i+minn-1+n)%n]=inputSeq[(i+mini)%n];

if(!valid(n, inputSeq)) return 0;
bool notbroke=true;
rep(i,n) notbroke&=x[i]<=n;
if(notbroke) return 1;

vector<int>aid;
rep(i,n) if(x[i]>n) aid.push_back(x[i]);
sort(all(aid));

int res=1;
int last = n;
rep(i, aid.size())
{
res=(res*fastpow(aid.size()-i, aid[i]-last-1))%MOD;
last=aid[i];
}
return res;
}
```

### Compilation message

```gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:34:7: warning: unused variable 'cur' [-Wunused-variable]
34 |   int cur = 0;
|       ^~~```

#### Subtask #1 5.0 / 5.0

# Verdict Execution time Memory Grader output
1 Correct 0 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 0 ms 212 KB Output is correct
5 Correct 0 ms 224 KB Output is correct

#### Subtask #2 5.0 / 5.0

# 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 0 ms 212 KB Output is correct
6 Correct 4 ms 724 KB Output is correct
7 Correct 9 ms 1236 KB Output is correct
8 Correct 8 ms 1108 KB Output is correct
9 Correct 3 ms 468 KB Output is correct
10 Correct 9 ms 1224 KB Output is correct

#### Subtask #3 10.0 / 10.0

# Verdict Execution time Memory Grader output
1 Correct 0 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 0 ms 212 KB Output is correct
6 Correct 5 ms 852 KB Output is correct
7 Correct 9 ms 1236 KB Output is correct
8 Correct 7 ms 1108 KB Output is correct
9 Correct 3 ms 468 KB Output is correct
10 Correct 8 ms 1236 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 4 ms 724 KB Output is correct
14 Correct 0 ms 280 KB Output is correct
15 Correct 11 ms 1236 KB Output is correct

#### Subtask #4 5.0 / 5.0

# 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 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct

#### Subtask #5 10.0 / 10.0

# 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 0 ms 212 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 2 ms 468 KB Output is correct

#### Subtask #6 20.0 / 20.0

# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 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 388 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 468 KB Output is correct
11 Correct 12 ms 1784 KB Output is correct
12 Correct 9 ms 1980 KB Output is correct
13 Correct 25 ms 4044 KB Output is correct
14 Correct 8 ms 1748 KB Output is correct
15 Correct 32 ms 3824 KB Output is correct

#### Subtask #7 5.0 / 5.0

# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct

#### Subtask #8 15.0 / 15.0

# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 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

#### Subtask #9 0 / 15.0

# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 19 ms 2316 KB Output is correct
10 Correct 14 ms 2128 KB Output is correct
11 Correct 6 ms 1108 KB Output is correct
12 Correct 8 ms 1236 KB Output is correct
13 Incorrect 2 ms 468 KB Output isn't correct
14 Halted 0 ms 0 KB -

#### Subtask #10 0 / 10.0

# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 18 ms 2356 KB Output is correct
10 Correct 15 ms 2132 KB Output is correct
11 Correct 6 ms 1108 KB Output is correct
12 Correct 7 ms 1236 KB Output is correct
13 Incorrect 2 ms 468 KB Output isn't correct
14 Halted 0 ms 0 KB -