#include <bits/stdc++.h>
#include "gondola.h"
using namespace std;
#define pb push_back
#define pii pair < int, int >
#define fr first
#define sc second
#define mk make_pair
#define all(s) s.begin(), s.end()
#define sz(s) (int)s.size()
#define ll long long
const int N = (int)3e5 + 7;
int valid(int n, int inputSeq[]) {
int cnt = 1, start = -1;
for (int i = 0; i < n; i++) {
if (inputSeq[i] == cnt) {
start = i;
break;
}
}
for (int i = start; i < n; i++) {
if (inputSeq[i] != cnt) {
return 0;
}
cnt++;
}
for (int i = 0; i < start; i++) {
if (inputSeq[i] != cnt) {
return 0;
}
cnt++;
}
return 1;
}
//----------------------
int has[N], pos[N];
int replacement(int n, int gondolaSeq[], int replacementSeq[]) {
int start = -1, mx = -1;
memset(pos, -1, sizeof pos);
for (int i = 0; i < n; i++) {
has[gondolaSeq[i]] = 1;
pos[gondolaSeq[i]] = i;
mx = max(mx, gondolaSeq[i]);
if (gondolaSeq[i] <= n) {
if (start != -1) continue;
start = i - gondolaSeq[i] + 1;
if (start < 0) start += n;
}
}
deque < int > ans, dq;
if (start == -1)
start = 0;
for (int i = n + 1; i <= mx; i++) {
if (has[i]) {
int qwe = pos[i];
qwe -= start;
if (qwe < 0) qwe += n;
qwe++;
ans.pb(qwe);
while (!dq.empty()) {
ans.pb(dq.front());
dq.pop_front();
}
dq.clear();
} else {
dq.pb(i);
}
}
int i = 0;
for (int to : ans) {
replacementSeq[i++] = to;
}
return i;
}
//----------------------
int mod = (int)1e9 + 9;
int mult(ll a, ll b) {
return (a * b) % mod;
}
ll binpow(ll a, ll n) {
ll res = 1;
while (n) {
if (n & 1) {
res = mult(res, a);
}
a = mult(a, a);
n >>= 1;
}
return res;
}
int countReplacement(int n, int inputSeq[]) {
if (!valid(n, inputSeq)) return 0;
int res = 1;
sort(inputSeq, inputSeq + n);
for (int i = 0; i < n; i++) {
if (inputSeq[i] <= n) continue;
if (!i) {
res = mult(res, binpow(n, inputSeq[i] - n - 1));
} else {
res = mult(res, binpow(n - i, inputSeq[i] - max(inputSeq[i - 1], n) - 1));
}
}
if (inputSeq[0] > n) {
res = mult(res, n);
}
return res;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
412 KB |
Output is correct |
4 |
Correct |
2 ms |
488 KB |
Output is correct |
5 |
Correct |
2 ms |
488 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
488 KB |
Output is correct |
2 |
Correct |
2 ms |
564 KB |
Output is correct |
3 |
Correct |
2 ms |
576 KB |
Output is correct |
4 |
Correct |
2 ms |
576 KB |
Output is correct |
5 |
Correct |
2 ms |
620 KB |
Output is correct |
6 |
Correct |
6 ms |
764 KB |
Output is correct |
7 |
Correct |
13 ms |
892 KB |
Output is correct |
8 |
Correct |
10 ms |
892 KB |
Output is correct |
9 |
Correct |
5 ms |
892 KB |
Output is correct |
10 |
Correct |
12 ms |
908 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
908 KB |
Output is correct |
2 |
Correct |
2 ms |
908 KB |
Output is correct |
3 |
Correct |
2 ms |
908 KB |
Output is correct |
4 |
Correct |
2 ms |
908 KB |
Output is correct |
5 |
Correct |
2 ms |
908 KB |
Output is correct |
6 |
Correct |
6 ms |
908 KB |
Output is correct |
7 |
Correct |
13 ms |
1008 KB |
Output is correct |
8 |
Correct |
10 ms |
1008 KB |
Output is correct |
9 |
Correct |
5 ms |
1008 KB |
Output is correct |
10 |
Correct |
21 ms |
1008 KB |
Output is correct |
11 |
Correct |
2 ms |
1008 KB |
Output is correct |
12 |
Correct |
2 ms |
1008 KB |
Output is correct |
13 |
Correct |
9 ms |
1008 KB |
Output is correct |
14 |
Correct |
2 ms |
1008 KB |
Output is correct |
15 |
Correct |
18 ms |
1008 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
1788 KB |
Output is correct |
2 |
Correct |
3 ms |
1788 KB |
Output is correct |
3 |
Correct |
3 ms |
1788 KB |
Output is correct |
4 |
Correct |
3 ms |
1788 KB |
Output is correct |
5 |
Correct |
4 ms |
1788 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
1788 KB |
Output is correct |
2 |
Correct |
3 ms |
1788 KB |
Output is correct |
3 |
Correct |
3 ms |
1788 KB |
Output is correct |
4 |
Correct |
2 ms |
1788 KB |
Output is correct |
5 |
Correct |
3 ms |
1896 KB |
Output is correct |
6 |
Correct |
3 ms |
1896 KB |
Output is correct |
7 |
Correct |
3 ms |
1896 KB |
Output is correct |
8 |
Correct |
3 ms |
1896 KB |
Output is correct |
9 |
Correct |
3 ms |
1896 KB |
Output is correct |
10 |
Correct |
3 ms |
1896 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
1896 KB |
Output is correct |
2 |
Correct |
3 ms |
1896 KB |
Output is correct |
3 |
Correct |
3 ms |
1896 KB |
Output is correct |
4 |
Correct |
4 ms |
1896 KB |
Output is correct |
5 |
Correct |
3 ms |
1896 KB |
Output is correct |
6 |
Correct |
3 ms |
1896 KB |
Output is correct |
7 |
Correct |
3 ms |
1896 KB |
Output is correct |
8 |
Correct |
3 ms |
1896 KB |
Output is correct |
9 |
Correct |
3 ms |
1896 KB |
Output is correct |
10 |
Correct |
4 ms |
1896 KB |
Output is correct |
11 |
Correct |
12 ms |
2460 KB |
Output is correct |
12 |
Correct |
14 ms |
2560 KB |
Output is correct |
13 |
Correct |
18 ms |
3184 KB |
Output is correct |
14 |
Correct |
14 ms |
3184 KB |
Output is correct |
15 |
Correct |
23 ms |
4196 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
4196 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
4196 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
3 ms |
4196 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
4196 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |