#include <bits/stdc++.h>
#include "gondola.h"
using namespace std ;
long long mod = 1e9 + 7 ;
const int N = 3e5 + 7 ;
int valid(int n, int inputSeq[]){
vector<int> vis(N , 0) ;
int cur = inputSeq[0] -1 ;
for(int i = 0 ; i < n; i++){
if(vis[inputSeq[i]]++)return 0 ;
if(--inputSeq[i]!=cur)
return 0 ;
cur = (cur+1) %n ;
}
return 1 ;
}
int ab[N] ;
int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
int proto[N] ;
for(int i = 0 ; i <n; i++)proto[i] = i+1 ;
for(int i = 0 ; i <n; i++){
if(gondolaSeq[i] <=n){
int k = gondolaSeq[i] +1;
proto[i] = gondolaSeq[i] ;
if(k==n+1)k=1 ;
for(int j = 1 ; j < n ;j++){
int loc = (i+j)%n;
proto[loc] = k++ ;
if(k==n+1)k = 1 ;
}
break;
}
}
int cur = 0 , ladder = n +1;
vector< pair<int, int > > q ;
for(int i = 0 ; i < n ;i++){
q.push_back({gondolaSeq[i] , proto[i]});
}
sort(q.begin(), q.end()) ;
for(int i= 0 ; i < n; i++){
int fr = q[i].first , se = q[i] .second ;
while(se < fr){
replacementSeq[cur++] = se ;
se = ladder ++ ;
}
}
return cur ;
}
long long fas(long long a , long long b){
if(!b)return 1ll ;
long long ret = fas(a , b/2) ;
ret = (ret*ret)%mod ;
if(b%2)
ret = (ret*a)%mod ;
return ret ;
}
long long mul(long long a , long long b){
return (1ll * a * b) % mod ;
}
int countReplacement(int n, int inputSeq[])
{
map<int , bool > mp ;
for(int i = 0 ; i < n;i++){
if(mp[inputSeq[i]])return 0 ;
mp[inputSeq[i]] = 1 ;
}
long long ret = 1ll ;
int proto[N] ;
for(int i = 0 ; i <n; i++)proto[i] = i+1 ;
for(int i = 0 ; i <n; i++){
if(inputSeq[i] <=n){
int k = inputSeq[i] +1;
proto[i] = inputSeq[i] ;
if(k==n+1)k=1 ;
for(int j = 1 ; j < n ;j++){
int loc = (i+j)%n;
proto[loc] = k++ ;
if(inputSeq[loc] <=n && proto[loc]!=inputSeq[loc])
return 0 ;
if(k==n+1)k = 1 ;
}
break;
}
}
int cur = 0 , ladder = n +1;
vector< pair<int, int > > q ;
for(int i = 0 ; i < n ;i++){
q.push_back({inputSeq[i] , proto[i]});
}
sort(q.begin(), q.end()) ;
long long base = n ;
for(int i= 0 ; i < n; i++){
int fr = q[i].first , se = q[i] .second ;
if(fr==se){
base-- ;
continue ;
}
ret = mul(ret , fas(base , fr - ladder));
ladder = fr+1 ;
base-- ;
}
return ret ;
}
Compilation message
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:98:9: warning: unused variable 'cur' [-Wunused-variable]
int cur = 0 , ladder = n +1;
^~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
1536 KB |
Output is correct |
2 |
Correct |
5 ms |
1536 KB |
Output is correct |
3 |
Correct |
5 ms |
1536 KB |
Output is correct |
4 |
Correct |
5 ms |
1536 KB |
Output is correct |
5 |
Correct |
5 ms |
1536 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
1536 KB |
Output is correct |
2 |
Correct |
5 ms |
1536 KB |
Output is correct |
3 |
Correct |
5 ms |
1536 KB |
Output is correct |
4 |
Correct |
5 ms |
1536 KB |
Output is correct |
5 |
Correct |
5 ms |
1536 KB |
Output is correct |
6 |
Correct |
10 ms |
1664 KB |
Output is correct |
7 |
Correct |
18 ms |
1920 KB |
Output is correct |
8 |
Correct |
15 ms |
1792 KB |
Output is correct |
9 |
Correct |
8 ms |
1536 KB |
Output is correct |
10 |
Correct |
21 ms |
1792 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
1536 KB |
Output is correct |
2 |
Correct |
5 ms |
1536 KB |
Output is correct |
3 |
Correct |
5 ms |
1536 KB |
Output is correct |
4 |
Correct |
5 ms |
1536 KB |
Output is correct |
5 |
Correct |
5 ms |
1536 KB |
Output is correct |
6 |
Correct |
10 ms |
1664 KB |
Output is correct |
7 |
Correct |
17 ms |
1792 KB |
Output is correct |
8 |
Correct |
15 ms |
1792 KB |
Output is correct |
9 |
Correct |
8 ms |
1536 KB |
Output is correct |
10 |
Correct |
17 ms |
1920 KB |
Output is correct |
11 |
Correct |
5 ms |
1536 KB |
Output is correct |
12 |
Correct |
5 ms |
1536 KB |
Output is correct |
13 |
Correct |
12 ms |
1664 KB |
Output is correct |
14 |
Correct |
5 ms |
1536 KB |
Output is correct |
15 |
Correct |
18 ms |
1792 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
5 ms |
384 KB |
Output is correct |
4 |
Correct |
5 ms |
384 KB |
Output is correct |
5 |
Correct |
5 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
384 KB |
Output is correct |
2 |
Correct |
5 ms |
384 KB |
Output is correct |
3 |
Correct |
5 ms |
512 KB |
Output is correct |
4 |
Correct |
4 ms |
384 KB |
Output is correct |
5 |
Correct |
4 ms |
384 KB |
Output is correct |
6 |
Correct |
4 ms |
384 KB |
Output is correct |
7 |
Correct |
5 ms |
384 KB |
Output is correct |
8 |
Correct |
5 ms |
384 KB |
Output is correct |
9 |
Correct |
5 ms |
384 KB |
Output is correct |
10 |
Correct |
5 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
4 ms |
384 KB |
Output is correct |
4 |
Correct |
4 ms |
384 KB |
Output is correct |
5 |
Correct |
4 ms |
384 KB |
Output is correct |
6 |
Correct |
5 ms |
384 KB |
Output is correct |
7 |
Correct |
5 ms |
384 KB |
Output is correct |
8 |
Correct |
5 ms |
384 KB |
Output is correct |
9 |
Correct |
5 ms |
384 KB |
Output is correct |
10 |
Correct |
5 ms |
384 KB |
Output is correct |
11 |
Correct |
20 ms |
2160 KB |
Output is correct |
12 |
Correct |
22 ms |
2168 KB |
Output is correct |
13 |
Correct |
22 ms |
1512 KB |
Output is correct |
14 |
Correct |
19 ms |
2168 KB |
Output is correct |
15 |
Correct |
35 ms |
2288 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
4 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Correct |
4 ms |
384 KB |
Output is correct |
4 |
Correct |
4 ms |
384 KB |
Output is correct |
5 |
Correct |
4 ms |
384 KB |
Output is correct |
6 |
Correct |
4 ms |
384 KB |
Output is correct |
7 |
Incorrect |
5 ms |
384 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
384 KB |
Output is correct |
2 |
Correct |
5 ms |
384 KB |
Output is correct |
3 |
Correct |
4 ms |
384 KB |
Output is correct |
4 |
Correct |
4 ms |
384 KB |
Output is correct |
5 |
Correct |
4 ms |
384 KB |
Output is correct |
6 |
Correct |
5 ms |
384 KB |
Output is correct |
7 |
Incorrect |
4 ms |
384 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
384 KB |
Output is correct |
2 |
Correct |
5 ms |
384 KB |
Output is correct |
3 |
Correct |
5 ms |
384 KB |
Output is correct |
4 |
Correct |
4 ms |
384 KB |
Output is correct |
5 |
Correct |
4 ms |
384 KB |
Output is correct |
6 |
Correct |
5 ms |
384 KB |
Output is correct |
7 |
Incorrect |
5 ms |
384 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |