#include<bits/stdc++.h>
#include "gondola.h"
using namespace std;
#define ll long long
#define fi first
#define se second
int valid(int n, int inputSeq[]){
int mi=1e9,pos=0;
vector<int> k;
for(int i=0;i<n;i++)k.push_back(inputSeq[i]);
sort(k.begin(),k.end());
for(int i=1;i<n;i++){
if(k[i]==k[i-1])return 0;
}
for(int i=0;i<n;i++)k[i]=inputSeq[i];
for(int i=0;i<n;i++){
if(k[i]<mi){
mi=k[i];
pos=i;
}
}
if(mi>n)return 1;
pos-=mi-1;
pos=(pos+2*n)%n;
int cur=0;
for(int i=pos;i<pos+n;i++){
cur++;
int x=i%n;
if(k[x]>n)continue;
if(k[x]!=cur)return 0;
}
return 1;
}
//----------------------
int replacement(int n, int gondolaSeq[], int replacementSeq[]){
vector<int> k(n);
for(int i=0;i<n;i++)k[i]=gondolaSeq[i];
int mi=1e9,pos=0;
for(int i=0;i<n;i++){
if(k[i]<mi){
mi=k[i];
pos=i;
}
}
pos=((pos-mi+1)%n+n*2)%n;
vector<pair<int,int> >repl;
int cur=0;
for(int i=pos;i<pos+n;i++){
cur++;
int x=i%n;
if(k[x]==cur)continue;
repl.push_back({k[x],cur});
}
sort(repl.begin(),repl.end());
vector<int> ans;
int prec=n;
for(int i=0;i<repl.size();i++){
ans.push_back(repl[i].second);
prec++;
while(prec<repl[i].first){
ans.push_back(prec);
prec++;
}
}
for(int i=0;i<ans.size();i++)replacementSeq[i]=ans[i];
return ans.size();
}
//----------------------
const ll mod=1e9+9;
ll pot(ll a,ll b){
if(b==0)return 1;
ll x=pot(a,b/2);
if(b%2)return x*x%mod*a%mod;
return x*x%mod;
}
int countReplacement(int n, int inputSeq[]){
if(valid(n,inputSeq)==0)return 0;
vector<int> k(n);
for(int i=0;i<n;i++)k[i]=inputSeq[i];
int mi=1e9,pos=0;
for(int i=0;i<n;i++){
if(k[i]<mi){
mi=k[i];
pos=i;
}
}
ll sol=1;
if(mi>n){
sol=n;
}
pos=((pos-mi+1)%n+n*2)%n;
vector<ll>repl;
int cur=0;
for(int i=pos;i<pos+n;i++){
cur++;
int x=i%n;
if(k[x]==cur)continue;
repl.push_back(k[x]);
}
if(repl.size()==0)return 1;
sort(repl.begin(),repl.end());
for(int i=repl.size()-2;i>=0;i--){
sol*=pot(repl.size()-i-1,repl[i+1]-repl[i]-1);
sol%=mod;
}
sol*=pot(repl.size(),repl[0]-n-1);
sol%=mod;
return sol;
}
Compilation message
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:61:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
61 | for(int i=0;i<repl.size();i++){
| ~^~~~~~~~~~~~
gondola.cpp:69:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
69 | for(int i=0;i<ans.size();i++)replacementSeq[i]=ans[i];
| ~^~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
384 KB |
Output is correct |
2 |
Correct |
0 ms |
256 KB |
Output is correct |
3 |
Correct |
1 ms |
256 KB |
Output is correct |
4 |
Correct |
0 ms |
384 KB |
Output is correct |
5 |
Correct |
0 ms |
256 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
256 KB |
Output is correct |
2 |
Correct |
1 ms |
256 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
0 ms |
384 KB |
Output is correct |
5 |
Correct |
0 ms |
256 KB |
Output is correct |
6 |
Correct |
9 ms |
896 KB |
Output is correct |
7 |
Correct |
20 ms |
1276 KB |
Output is correct |
8 |
Correct |
14 ms |
1276 KB |
Output is correct |
9 |
Correct |
6 ms |
640 KB |
Output is correct |
10 |
Correct |
21 ms |
1404 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
384 KB |
Output is correct |
2 |
Correct |
0 ms |
256 KB |
Output is correct |
3 |
Correct |
1 ms |
256 KB |
Output is correct |
4 |
Correct |
0 ms |
384 KB |
Output is correct |
5 |
Correct |
0 ms |
384 KB |
Output is correct |
6 |
Correct |
11 ms |
896 KB |
Output is correct |
7 |
Correct |
20 ms |
1276 KB |
Output is correct |
8 |
Correct |
14 ms |
1276 KB |
Output is correct |
9 |
Correct |
6 ms |
640 KB |
Output is correct |
10 |
Correct |
20 ms |
1276 KB |
Output is correct |
11 |
Correct |
0 ms |
256 KB |
Output is correct |
12 |
Correct |
1 ms |
256 KB |
Output is correct |
13 |
Correct |
9 ms |
896 KB |
Output is correct |
14 |
Correct |
0 ms |
256 KB |
Output is correct |
15 |
Correct |
24 ms |
1276 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
256 KB |
Output is correct |
2 |
Correct |
0 ms |
256 KB |
Output is correct |
3 |
Correct |
1 ms |
384 KB |
Output is correct |
4 |
Correct |
0 ms |
256 KB |
Output is correct |
5 |
Correct |
1 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
256 KB |
Output is correct |
2 |
Correct |
1 ms |
256 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
1 ms |
384 KB |
Output is correct |
5 |
Correct |
0 ms |
256 KB |
Output is correct |
6 |
Correct |
1 ms |
256 KB |
Output is correct |
7 |
Correct |
1 ms |
384 KB |
Output is correct |
8 |
Correct |
1 ms |
384 KB |
Output is correct |
9 |
Correct |
1 ms |
384 KB |
Output is correct |
10 |
Correct |
1 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
384 KB |
Output is correct |
2 |
Correct |
0 ms |
256 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
1 ms |
256 KB |
Output is correct |
5 |
Correct |
1 ms |
256 KB |
Output is correct |
6 |
Correct |
1 ms |
256 KB |
Output is correct |
7 |
Correct |
1 ms |
384 KB |
Output is correct |
8 |
Correct |
1 ms |
384 KB |
Output is correct |
9 |
Correct |
1 ms |
384 KB |
Output is correct |
10 |
Correct |
1 ms |
384 KB |
Output is correct |
11 |
Correct |
12 ms |
896 KB |
Output is correct |
12 |
Correct |
14 ms |
1024 KB |
Output is correct |
13 |
Correct |
18 ms |
1532 KB |
Output is correct |
14 |
Correct |
12 ms |
896 KB |
Output is correct |
15 |
Correct |
26 ms |
2372 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
256 KB |
Output is correct |
2 |
Correct |
1 ms |
384 KB |
Output is correct |
3 |
Correct |
1 ms |
256 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
256 KB |
Output is correct |
2 |
Correct |
0 ms |
308 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
0 ms |
256 KB |
Output is correct |
5 |
Correct |
0 ms |
384 KB |
Output is correct |
6 |
Correct |
0 ms |
256 KB |
Output is correct |
7 |
Correct |
0 ms |
256 KB |
Output is correct |
8 |
Correct |
0 ms |
256 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
384 KB |
Output is correct |
2 |
Correct |
1 ms |
384 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
1 ms |
256 KB |
Output is correct |
5 |
Correct |
1 ms |
256 KB |
Output is correct |
6 |
Correct |
0 ms |
384 KB |
Output is correct |
7 |
Correct |
0 ms |
384 KB |
Output is correct |
8 |
Correct |
1 ms |
256 KB |
Output is correct |
9 |
Correct |
30 ms |
1880 KB |
Output is correct |
10 |
Correct |
20 ms |
1724 KB |
Output is correct |
11 |
Correct |
10 ms |
936 KB |
Output is correct |
12 |
Correct |
10 ms |
916 KB |
Output is correct |
13 |
Correct |
3 ms |
512 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
256 KB |
Output is correct |
2 |
Correct |
0 ms |
384 KB |
Output is correct |
3 |
Correct |
0 ms |
256 KB |
Output is correct |
4 |
Correct |
0 ms |
256 KB |
Output is correct |
5 |
Correct |
0 ms |
384 KB |
Output is correct |
6 |
Correct |
0 ms |
384 KB |
Output is correct |
7 |
Correct |
1 ms |
256 KB |
Output is correct |
8 |
Correct |
0 ms |
256 KB |
Output is correct |
9 |
Correct |
26 ms |
1880 KB |
Output is correct |
10 |
Correct |
20 ms |
1548 KB |
Output is correct |
11 |
Correct |
8 ms |
936 KB |
Output is correct |
12 |
Correct |
10 ms |
916 KB |
Output is correct |
13 |
Correct |
3 ms |
512 KB |
Output is correct |
14 |
Correct |
33 ms |
3368 KB |
Output is correct |
15 |
Correct |
37 ms |
3484 KB |
Output is correct |
16 |
Correct |
7 ms |
1080 KB |
Output is correct |
17 |
Correct |
25 ms |
2176 KB |
Output is correct |
18 |
Correct |
17 ms |
1776 KB |
Output is correct |