#include "gondola.h"
#include <algorithm>
#include <set>
using namespace std;
#define MAX_N 101101
#define MAX_V 250052
#define MOD 1000000009
typedef long long ll;
int CheckV[MAX_V];
int valid(int n, int inputSeq[])
{
for(int i=0; i<n; i++) {
int now = inputSeq[i];
CheckV[now]++;
if(CheckV[now] > 1) return 0;
}
int first = -1;
for(int i=0; i<n; i++) {
int now = inputSeq[i];
if(now > n) continue;
first = i;
break;
}
if(first == -1) return 1;
for(int i=0; i<n; i++) {
int index = (first + i) % n;
int value = (inputSeq[first] + i - 1) % n + 1;
int now = inputSeq[index];
if(now > n) continue;
if(now != value) return 0;
}
return 1;
}
//----------------------
struct SORTR{
int index;
int value;
}SortR[MAX_N];
bool operator<(SORTR X, SORTR Y) {
return X.value < Y.value;
}
int State[MAX_N];
int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
int first = 0;
for(int i=0; i<n; i++) {
int now = gondolaSeq[i];
if(now > n) continue;
first = i;
break;
}
for(int i=0; i<n; i++) {
int index = (first + i) % n;
int value = (gondolaSeq[first] + i - 1) % n + 1;
State[index] = value;
SortR[i].index = i;
SortR[i].value = gondolaSeq[i];
}
sort(SortR, SortR+n);
int cnt = 0;
int now = n;
for(int i=0; i<n; i++) {
int nowindex = SortR[i].index;
int nowvalue = SortR[i].value;
if(nowvalue < n) continue;
while(State[nowindex] != nowvalue) {
replacementSeq[cnt++] = State[nowindex];
State[nowindex] = ++now;
}
}
return cnt;
}
//----------------------
set<int> CheckSame;
ll Ans = 1;
struct SORTC{
int index;
int value;
}SortC[MAX_N];
bool operator<(SORTC X, SORTC Y) {
return X.value < Y.value;
}
ll GetPower(int x, int k) {
ll result = 1;
ll powerx = x;
while(k) {
if(k%2 == 1) {
result *= powerx;
result %= MOD;
}
powerx *= powerx;
powerx %= MOD;
k/=2;
}
return result;
}
int countReplacement(int n, int inputSeq[])
{
for(int i=0; i<n; i++) {
int now = inputSeq[i];
if(CheckSame.find(now) != CheckSame.end())
return 0;
CheckSame.insert(now);
}
int first = -1;
for(int i=0; i<n; i++) {
int now = inputSeq[i];
if(now > n) continue;
first = i;
break;
}
if(first == -1) {
Ans = n;
first = 0;
}
for(int i=0; i<n; i++) {
SortC[i].index = i;
SortC[i].value = inputSeq[i];
}
sort(SortC, SortC+n);
int last = n;
for(int i=0; i<n; i++) {
int nowvalue = SortC[i].value;
if(nowvalue < n) continue;
int count = n - i;
Ans *= GetPower(count, nowvalue - last - 1);
Ans %= MOD;
last = nowvalue;
}
return (int)Ans;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
4 |
Correct |
0 ms |
5532 KB |
Output is correct |
5 |
Correct |
0 ms |
5532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
4 |
Correct |
0 ms |
5532 KB |
Output is correct |
5 |
Correct |
0 ms |
5532 KB |
Output is correct |
6 |
Correct |
4 ms |
5532 KB |
Output is correct |
7 |
Correct |
8 ms |
5532 KB |
Output is correct |
8 |
Correct |
12 ms |
5532 KB |
Output is correct |
9 |
Correct |
4 ms |
5532 KB |
Output is correct |
10 |
Correct |
12 ms |
5532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
4 |
Correct |
0 ms |
5532 KB |
Output is correct |
5 |
Correct |
0 ms |
5532 KB |
Output is correct |
6 |
Correct |
4 ms |
5532 KB |
Output is correct |
7 |
Correct |
12 ms |
5532 KB |
Output is correct |
8 |
Correct |
12 ms |
5532 KB |
Output is correct |
9 |
Correct |
4 ms |
5532 KB |
Output is correct |
10 |
Correct |
12 ms |
5532 KB |
Output is correct |
11 |
Correct |
0 ms |
5532 KB |
Output is correct |
12 |
Correct |
0 ms |
5532 KB |
Output is correct |
13 |
Correct |
0 ms |
5532 KB |
Output is correct |
14 |
Correct |
0 ms |
5532 KB |
Output is correct |
15 |
Correct |
8 ms |
5532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
4 |
Correct |
0 ms |
5532 KB |
Output is correct |
5 |
Correct |
0 ms |
5532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
4 |
Correct |
0 ms |
5532 KB |
Output is correct |
5 |
Correct |
0 ms |
5532 KB |
Output is correct |
6 |
Correct |
0 ms |
5532 KB |
Output is correct |
7 |
Correct |
0 ms |
5532 KB |
Output is correct |
8 |
Correct |
0 ms |
5532 KB |
Output is correct |
9 |
Correct |
0 ms |
5532 KB |
Output is correct |
10 |
Correct |
0 ms |
5532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
4 |
Correct |
0 ms |
5532 KB |
Output is correct |
5 |
Correct |
0 ms |
5532 KB |
Output is correct |
6 |
Correct |
0 ms |
5532 KB |
Output is correct |
7 |
Correct |
0 ms |
5532 KB |
Output is correct |
8 |
Correct |
0 ms |
5532 KB |
Output is correct |
9 |
Correct |
0 ms |
5532 KB |
Output is correct |
10 |
Correct |
0 ms |
5532 KB |
Output is correct |
11 |
Correct |
16 ms |
5532 KB |
Output is correct |
12 |
Correct |
24 ms |
5532 KB |
Output is correct |
13 |
Correct |
16 ms |
5532 KB |
Output is correct |
14 |
Correct |
16 ms |
5532 KB |
Output is correct |
15 |
Correct |
28 ms |
5532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
4 |
Correct |
0 ms |
5532 KB |
Output is correct |
5 |
Correct |
0 ms |
5532 KB |
Output is correct |
6 |
Correct |
0 ms |
5532 KB |
Output is correct |
7 |
Correct |
0 ms |
5532 KB |
Output is correct |
8 |
Correct |
0 ms |
5532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
4 |
Correct |
0 ms |
5532 KB |
Output is correct |
5 |
Correct |
0 ms |
5532 KB |
Output is correct |
6 |
Correct |
0 ms |
5532 KB |
Output is correct |
7 |
Correct |
0 ms |
5532 KB |
Output is correct |
8 |
Correct |
0 ms |
5532 KB |
Output is correct |
9 |
Correct |
60 ms |
8964 KB |
Output is correct |
10 |
Correct |
48 ms |
8304 KB |
Output is correct |
11 |
Correct |
16 ms |
6456 KB |
Output is correct |
12 |
Correct |
16 ms |
6720 KB |
Output is correct |
13 |
Correct |
4 ms |
5796 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
5532 KB |
Output is correct |
2 |
Correct |
0 ms |
5532 KB |
Output is correct |
3 |
Correct |
0 ms |
5532 KB |
Output is correct |
4 |
Correct |
0 ms |
5532 KB |
Output is correct |
5 |
Correct |
0 ms |
5532 KB |
Output is correct |
6 |
Correct |
0 ms |
5532 KB |
Output is correct |
7 |
Correct |
0 ms |
5532 KB |
Output is correct |
8 |
Correct |
0 ms |
5532 KB |
Output is correct |
9 |
Correct |
52 ms |
8964 KB |
Output is correct |
10 |
Correct |
44 ms |
8304 KB |
Output is correct |
11 |
Correct |
12 ms |
6456 KB |
Output is correct |
12 |
Correct |
20 ms |
6720 KB |
Output is correct |
13 |
Correct |
4 ms |
5796 KB |
Output is correct |
14 |
Correct |
56 ms |
9360 KB |
Output is correct |
15 |
Correct |
80 ms |
9888 KB |
Output is correct |
16 |
Correct |
12 ms |
6324 KB |
Output is correct |
17 |
Correct |
48 ms |
8436 KB |
Output is correct |
18 |
Correct |
28 ms |
7116 KB |
Output is correct |