Submission #147761

# Submission time Handle Problem Language Result Execution time Memory
147761 2019-08-30T15:16:32 Z karma Gondola (IOI14_gondola) C++14
45 / 100
17 ms 1796 KB
#include <bits/stdc++.h>
#include "gondola.h"
#define pb      emplace_back
#define fi      first
#define se      second

using namespace std;

const int N = int(1e6) + 2;
const int mod = int(1e9) + 9;

int dem[N];

int valid(int n, int p[])
{
    int mn = 0, res = -1;
    for(int i = 0; i < n; ++i) {
        if(p[mn] > p[i]) mn = i;
        if(++dem[p[i]] > 1) res = 0;
    }
    if(p[mn] > n && res == -1) res = 1;
    for(int i = mn, lim = mn + n; i < lim; ++i) {
        --dem[p[i % n]];
        if(p[i % n] > n || res != -1) continue;
        if(p[i % n] - p[mn] != i - mn) res = 0;
    }
    if(res == -1) res = 1;
    return res;
}

int replacement(int n, int p[], int res[])
{
    int mx = n, cnt = 0;
    for(int i = 0; i < n; ++i) {
       mx = max(mx, p[i]);
       ++dem[p[i]];
    }
    for(int i = 1; i <= mx; ++i) {
        if(!dem[i]) res[cnt ++] = i;
        else --dem[i];
    }
    return cnt;
}

int countReplacement(int n, int p[])
{
    if(!valid(n, p)) return 0;
    int mx = 0, mn = n + 1, cnt = 0, res = 1;
    for(int i = 0; i < n; ++i) {
        mx = max(p[i], mx);
        mn = min(mn, p[i]);
        if(p[i] > n) ++cnt, dem[p[i]] = 1;
    }
    if(mn <= n) {
        for(int i = n + 1; i <= mx; ++i) {
            if(dem[i]) --cnt, --dem[i];
            else res = 1ll * res * cnt % mod;
        }
    } else {
        for(int i = n + 1; i <= mx; ++i) {
            res = 1ll * res * cnt % mod;
            if(dem[i]) --cnt, --dem[i];
        }
    }
    return res;
}

//int n, a[N], cmd, res[N];
//
//int main()
//{
//    ios_base::sync_with_stdio(0);
//    cin.tie(0), cout.tie(0);
//    if(fopen("test.inp", "r")) {
//        freopen("test.inp", "r", stdin);
//        freopen("test.out", "w", stdout);
//    }
//    int nTest;
//    cin >> nTest;
//    while(nTest --) {
//        cin >> cmd >> n;
//        for(int i = 0; i < n; ++i) cin >> a[i];
//        if(cmd == 1) cout << valid(n, a) << '\n';
//        else if(cmd == 2) {
//            int sz = replacement(n, a, res);
//            for(int i = 0; i < sz; ++i) cout << res[i] << ' ';
//            cout << '\n';
//        } else cout << countReplacement(n, a) << '\n';
//    }
//}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 252 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 7 ms 760 KB Output is correct
7 Correct 16 ms 1528 KB Output is correct
8 Correct 13 ms 1276 KB Output is correct
9 Correct 5 ms 632 KB Output is correct
10 Correct 13 ms 1400 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 7 ms 888 KB Output is correct
7 Correct 15 ms 1528 KB Output is correct
8 Correct 12 ms 1276 KB Output is correct
9 Correct 5 ms 632 KB Output is correct
10 Correct 13 ms 1528 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Correct 2 ms 376 KB Output is correct
13 Correct 9 ms 1656 KB Output is correct
14 Correct 2 ms 376 KB Output is correct
15 Correct 17 ms 1656 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 312 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Incorrect 3 ms 376 KB Output isn't correct
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 380 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Incorrect 2 ms 376 KB Output isn't correct
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 256 KB Output is correct
8 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 252 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 2 ms 348 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 2 ms 364 KB Output is correct
7 Correct 2 ms 256 KB Output is correct
8 Correct 2 ms 256 KB Output is correct
9 Correct 16 ms 1796 KB Output is correct
10 Correct 13 ms 1528 KB Output is correct
11 Correct 8 ms 1272 KB Output is correct
12 Correct 8 ms 1144 KB Output is correct
13 Incorrect 5 ms 632 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 2 ms 256 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 256 KB Output is correct
9 Correct 16 ms 1788 KB Output is correct
10 Correct 14 ms 1500 KB Output is correct
11 Correct 8 ms 1272 KB Output is correct
12 Correct 8 ms 1144 KB Output is correct
13 Incorrect 5 ms 632 KB Output isn't correct
14 Halted 0 ms 0 KB -