Submission #1007513

# Submission time Handle Problem Language Result Execution time Memory
1007513 2024-06-25T05:19:25 Z The_Samurai Gondola (IOI14_gondola) C++17
75 / 100
30 ms 8020 KB
#include "gondola.h"
#include "bits/stdc++.h"
using namespace std;

int valid(int n, int a[]) {
    int last = -1;
    set<int> st;
    for (int i = 0; i < 2 * n; i++) {
        if (a[i % n] > n) continue;
        st.insert(a[i % n]);
        if (last != -1 and (a[last % n] + i - last - 1) % n != a[i % n] - 1) return 0;
        last = i;
    }
    return st.size() == n;
}

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

const int mod = 1e9 + 9;

int replacement(int n, int a[], int replacementSeq[]) {
    const int N = 2e5 + 5;
    vector<int> owns(N, -1), old(n);
    int any = -1, last = -1;
    for (int i = 0; i < n; i++) {
        if (a[i] <= n) continue;
        owns[a[i]] = i;
        if (any == -1 or a[any] < a[i]) any = i;
    }
    for (int i = 0; i < 2 * n; i++) {
        if (a[i % n] <= n) last = i;
        if (last == -1) continue;
        old[i % n] = (a[last % n] + i - last - 1) % n + 1;
    }
    if (last == -1) {
        for (int i = 0; i < n; i++) old[i] = i + 1;
    }
    int mx = *max_element(a, a + n), z = 0;
    for (int i = n + 1; i <= mx; i++) {
        if (owns[i] != -1) {
            replacementSeq[z++] = old[owns[i]];
            old[owns[i]] = i;
        } else {
            replacementSeq[z++] = old[any];
            old[any] = i;
        }
    }
    return z;
}

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

int countReplacement(int n, int a[]) {
    int last = -1;
    set<int> st;
    for (int i = 0; i < 2 * n; i++) {
        st.insert(a[i % n]);
        if (a[i % n] > n) continue;
        if (last != -1 and (a[last % n] + i - last - 1) % n != a[i % n] - 1) return 0;
        last = i;
    }
    if (st.size() != n) return 0;
    const int N = 1e6 + 5;
    vector<int> owns(N, -1);
    int ans = 1, left = 0;
    for (int i = 0; i < n; i++) {
        if (a[i] > n) owns[a[i]] = i, left++;
    }
    int mx = *max_element(a, a + n);
    for (int i = n + 1; i <= mx; i++) {
        if (owns[i] != -1) left--;
        else ans = 1ll * ans * left % mod;
    }
    return ans;
}

Compilation message

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:14:22: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   14 |     return st.size() == n;
      |            ~~~~~~~~~~^~~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:62:19: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   62 |     if (st.size() != n) return 0;
      |         ~~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 7 ms 2140 KB Output is correct
7 Correct 5 ms 600 KB Output is correct
8 Correct 14 ms 4076 KB Output is correct
9 Correct 4 ms 1372 KB Output is correct
10 Correct 23 ms 4444 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 8 ms 2288 KB Output is correct
7 Correct 5 ms 604 KB Output is correct
8 Correct 14 ms 3932 KB Output is correct
9 Correct 4 ms 1532 KB Output is correct
10 Correct 22 ms 4440 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 2 ms 348 KB Output is correct
14 Correct 0 ms 344 KB Output is correct
15 Correct 5 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 1116 KB Output is correct
2 Correct 1 ms 1116 KB Output is correct
3 Correct 1 ms 1116 KB Output is correct
4 Correct 0 ms 1116 KB Output is correct
5 Correct 1 ms 1116 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 1116 KB Output is correct
2 Correct 0 ms 1116 KB Output is correct
3 Correct 0 ms 1116 KB Output is correct
4 Correct 0 ms 1116 KB Output is correct
5 Correct 1 ms 1116 KB Output is correct
6 Correct 0 ms 1116 KB Output is correct
7 Correct 0 ms 1116 KB Output is correct
8 Correct 1 ms 1112 KB Output is correct
9 Correct 1 ms 1116 KB Output is correct
10 Correct 1 ms 1116 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 1112 KB Output is correct
2 Correct 0 ms 1116 KB Output is correct
3 Correct 1 ms 1116 KB Output is correct
4 Correct 0 ms 1116 KB Output is correct
5 Correct 1 ms 1116 KB Output is correct
6 Correct 0 ms 1116 KB Output is correct
7 Correct 0 ms 1116 KB Output is correct
8 Correct 1 ms 1112 KB Output is correct
9 Correct 1 ms 1116 KB Output is correct
10 Correct 1 ms 1116 KB Output is correct
11 Correct 5 ms 1628 KB Output is correct
12 Correct 6 ms 1884 KB Output is correct
13 Correct 8 ms 1624 KB Output is correct
14 Correct 6 ms 1624 KB Output is correct
15 Correct 10 ms 2320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4188 KB Output is correct
2 Correct 1 ms 4188 KB Output is correct
3 Correct 2 ms 4232 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4188 KB Output is correct
2 Correct 1 ms 4184 KB Output is correct
3 Correct 1 ms 4188 KB Output is correct
4 Correct 1 ms 4188 KB Output is correct
5 Correct 1 ms 4188 KB Output is correct
6 Correct 1 ms 4188 KB Output is correct
7 Correct 1 ms 4188 KB Output is correct
8 Correct 1 ms 4188 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4188 KB Output is correct
2 Correct 1 ms 4188 KB Output is correct
3 Correct 1 ms 4188 KB Output is correct
4 Correct 1 ms 4188 KB Output is correct
5 Correct 1 ms 4188 KB Output is correct
6 Correct 1 ms 4188 KB Output is correct
7 Correct 1 ms 4188 KB Output is correct
8 Correct 1 ms 4188 KB Output is correct
9 Correct 26 ms 8004 KB Output is correct
10 Correct 26 ms 7256 KB Output is correct
11 Correct 9 ms 5464 KB Output is correct
12 Correct 11 ms 5672 KB Output is correct
13 Incorrect 4 ms 4700 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 4184 KB Output is correct
2 Correct 1 ms 4188 KB Output is correct
3 Correct 1 ms 4188 KB Output is correct
4 Correct 1 ms 4188 KB Output is correct
5 Correct 1 ms 4188 KB Output is correct
6 Correct 1 ms 4188 KB Output is correct
7 Correct 1 ms 4188 KB Output is correct
8 Correct 1 ms 4188 KB Output is correct
9 Correct 30 ms 8020 KB Output is correct
10 Correct 23 ms 7260 KB Output is correct
11 Correct 10 ms 5468 KB Output is correct
12 Correct 10 ms 5720 KB Output is correct
13 Incorrect 3 ms 4444 KB Output isn't correct
14 Halted 0 ms 0 KB -