답안 #288180

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
288180 2020-09-01T09:37:13 Z ToMmyDong 최후의 만찬 (IOI12_supper) C++11
24 / 100
596 ms 24520 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define ALL(i) i.begin(), i.end()
#define SZ(i) int(i.size())
#define X first
#define Y second
#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));
}
template<typename T, typename S> ostream& operator << (ostream& os, const pair<T,S> &pa) {
    return os << "{" << pa.X << "," << pa.Y << "}";
}
#else
#define debug(...)
#endif
#include "advisor.h"


const int BB = 25001;
void ComputeAdvice(int *c, int n, int k, int m) {

    vector<int> nxt(n);
    vector<int> lst(n, n);
    for (int i=n-1; i>=0; i--) {
        nxt[i] = lst[c[i]];
        lst[c[i]] = i;
    }

    set<pii> pq;
    set<int> st;
    map<int,int> pos;
    for (int i=0; i<k; i++) {
        pos[i] = i;
        pq.emplace(pii(lst[i], i));
        st.insert(i);
        debug(lst[i], i);
    }
    vector<int> pl(k);
    iota(pl.begin(), pl.end(), 0);

    for (int i=0; i<n; i++) {
        int req = c[i];
        assert(c[i] == req);
        bool flag = true;
        if (!st.count(req)) {
            pii cur = *prev(pq.end());
            pq.erase(prev(pq.end()));
            debug(cur);
            debug(nxt[i], req);
            pl[pos[cur.Y]] = req;
            pos[req] = pos[cur.Y];

            st.erase(cur.Y);
            st.insert(req);
            pq.emplace(nxt[i], req);
        } else {
            flag = false;
            pq.erase({i, req});
            pq.emplace(nxt[i], req);
        }
        WriteAdvice(flag);
        if (flag) {
            int info = pos[req];
            for (int j=0; j<15; j++) {
                WriteAdvice((info>>j) & 1);
            }
        }
    }
    debug("done");
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define ALL(i) i.begin(), i.end()
#define SZ(i) int(i.size())
#define X first
#define Y second
#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));
}
template<typename T, typename S> ostream& operator << (ostream& os, const pair<T,S> &pa) {
    return os << "{" << pa.X << "," << pa.Y << "}";
}
#else
#define debug(...)
#endif

#include "assistant.h"

const int BB = 25001;
void Assist(unsigned char *a, int n, int k, int r) {

    vector<int> pl(k);
    iota(ALL(pl), 0);

    for (int i=0, ptr=0; i<n; i++) {
        int req = GetRequest();

        if (!a[ptr++]) continue;
        int kid = 0;
        for (int j=0; j<15; j++) {
            if (a[ptr++]) kid += 1<<j;
        }
        debug(kid);
        if (kid != BB) {
            PutBack(pl[kid]);
            pl[kid] = req;
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 776 KB Output is correct
2 Correct 1 ms 900 KB Output is correct
3 Correct 3 ms 1148 KB Output is correct
4 Correct 10 ms 1112 KB Output is correct
5 Incorrect 4 ms 1024 KB Error - advice is too long
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 32 ms 2048 KB Output is correct
2 Correct 154 ms 6352 KB Output is correct
3 Incorrect 445 ms 23656 KB Error - Not putting back color when it is not on the scaffold
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 302 ms 15360 KB Output is correct
2 Correct 393 ms 18888 KB Output is correct
3 Correct 393 ms 19256 KB Output is correct
4 Correct 387 ms 18384 KB Output is correct
5 Correct 314 ms 14808 KB Output is correct
6 Correct 397 ms 19144 KB Output is correct
7 Correct 381 ms 18896 KB Output is correct
8 Correct 469 ms 24520 KB Output is correct
9 Correct 272 ms 14792 KB Output is correct
10 Correct 389 ms 19152 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 1028 KB Error - advice is too long
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 424 ms 18768 KB Output is partially correct - 872365 bits used
2 Correct 397 ms 18888 KB Output is partially correct - 842095 bits used
3 Correct 393 ms 19152 KB Output is partially correct - 812470 bits used
4 Correct 400 ms 19144 KB Output is partially correct - 812005 bits used
5 Correct 394 ms 19392 KB Output is partially correct - 810610 bits used
6 Correct 392 ms 19144 KB Output is partially correct - 812155 bits used
7 Correct 438 ms 19408 KB Output is partially correct - 810929 bits used
8 Correct 396 ms 19272 KB Output is partially correct - 813340 bits used
9 Correct 425 ms 19288 KB Output is partially correct - 812830 bits used
10 Correct 596 ms 23920 KB Output is partially correct - 1217620 bits used