Submission #285531

# Submission time Handle Problem Language Result Execution time Memory
285531 2020-08-29T08:17:28 Z ToMmyDong Gondola (IOI14_gondola) C++11
25 / 100
36 ms 4856 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define first X
#define second Y
#define eb emplace_back
#define ALL(i) i.begin(),i.end()
#define SZ(i) int(i.size())
#ifdef tmd
#define debug(...) fprintf(stderr,"#%d-(%s)=",__LINE__,#__VA_ARGS__);_do(__VA_ARGS__);
template<typename T> void _do (T &&x) {cerr<<x<<endl;}
template<typename T, typename ...S> void _do(T &&x, S &&...y) {cerr<<x<<",";_do(y...);}
template<typename IT> ostream &__printRng (ostream& os, IT bg, IT ed) {
    for (IT it=bg; it!=ed; it++) {
        if (it == bg) os << "{" << *it;
        else os << "," << *it;
    }
    return os << "}";
}
template<typename T> ostream &operator << (ostream& os, const vector<T> &vec) {
    return __printRng(os,ALL(vec));
}
#else
#define debug(...)
#endif

#include "gondola.h"

int valid(int n, int inputSeq[])
{
    
    vector<int> sm;
    set<int> val;
    for (int i=0; i<n; i++) {
        if (inputSeq[i] <= n) {
            sm.push_back(inputSeq[i]);
            val.insert(inputSeq[i]);
        }
    }
    if (SZ(val) != n) return 0;
    int st = min_element(ALL(sm)) - sm.begin();
    for (int i=0; i<SZ(sm)-1; i++) {
        if (inputSeq[(st+i)%SZ(sm)] >= inputSeq[(st+i+1)%SZ(sm)]) {
            return 0;
        }
    }

    return 1;
}

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

const int MAXN = 250005;
int replacement(int n, int gondolaSeq[], int rs[])
{
    set<int> alive;
    vector<int> fin, cur;

    int off = 0;
    for (int i=0; i<n; i++) {
        fin.eb(gondolaSeq[i]);
        if (fin.back() > n) alive.insert(i);
        else off = (n+fin.back()-i) % n;
    }
    debug(off);
    for (int i=0; i<n; i++) {
        cur.eb((off + i) % n);
    }
    debug(cur);
    int mx = *max_element(ALL(fin));
    vector<int> pos(mx+1, -1);
    for (int i=0; i<SZ(fin); i++) {
        pos[fin[i]] = i;
    }
    int res = 0;
    for (int i=n+1; i<=mx; i++) {
        if (pos[i] == -1) {
            int p = *alive.begin();
            rs[res++] = cur[p];
            cur[p] = i;
        } else {
            assert(alive.count(pos[i]));
            alive.erase(pos[i]);
            rs[res++] = cur[pos[i]];
            cur[pos[i]] = i;
        }
    }
    return res;

}

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

int countReplacement(int n, int inputSeq[])
{
  return -3;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Correct 0 ms 256 KB Output is correct
5 Correct 1 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 1 ms 256 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 15 ms 2352 KB Output is correct
7 Correct 34 ms 4084 KB Output is correct
8 Correct 26 ms 4220 KB Output is correct
9 Correct 10 ms 1536 KB Output is correct
10 Correct 35 ms 4848 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 13 ms 2428 KB Output is correct
7 Correct 34 ms 4088 KB Output is correct
8 Correct 27 ms 4212 KB Output is correct
9 Correct 8 ms 1536 KB Output is correct
10 Correct 36 ms 4856 KB Output is correct
11 Correct 0 ms 256 KB Output is correct
12 Correct 0 ms 256 KB Output is correct
13 Correct 6 ms 512 KB Output is correct
14 Correct 0 ms 384 KB Output is correct
15 Correct 33 ms 3964 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Correct 0 ms 256 KB Output is correct
5 Correct 0 ms 256 KB Output is correct
6 Incorrect 1 ms 384 KB Integer 0 violates the range [1, 5]
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 0 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Incorrect 0 ms 256 KB Integer 0 violates the range [1, 5]
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 256 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 384 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 384 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 256 KB Integer -3 violates the range [0, 1000000008]
2 Halted 0 ms 0 KB -