답안 #430161

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
430161 2021-06-16T11:48:04 Z wiwiho 최후의 만찬 (IOI12_supper) C++14
0 / 100
209 ms 72728 KB
#include "advisor.h"

#include <bits/stdc++.h>
#include <bits/extc++.h>

#define StarBurstStream ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define iter(a) a.begin(), a.end()
#define riter(a) a.rbegin(), a.rend()
#define lsort(a) sort(iter(a))
#define gsort(a) sort(riter(a))
#define pb(a) push_back(a)
#define eb(a) emplace_back(a)
#define pf(a) push_front(a)
#define ef(a) emplace_front(a)
#define pob pop_back()
#define pof pop_front()
#define mp(a, b) make_pair(a, b)
#define F first
#define S second
#define mt make_tuple
#define gt(t, i) get<i>(t)
#define tomax(a, b) ((a) = max((a), (b)))
#define tomin(a, b) ((a) = min((a), (b)))
#define topos(a) ((a) = (((a) % MOD + MOD) % MOD))
#define uni(a) a.resize(unique(iter(a)) - a.begin())
#define printv(a, b) {bool pvaspace=false; \
for(auto pva : a){ \
    if(pvaspace) b << " "; pvaspace=true;\
    b << pva;\
}\
b << "\n";}

using namespace std;
using namespace __gnu_pbds;

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pdd = pair<ld, ld>;
using tiii = tuple<int, int, int>;

const ll MOD = 1000000007;
const ll MAX = 2147483647;

template<typename A, typename B>
ostream& operator<<(ostream& o, pair<A, B> p){
    return o << '(' << p.F << ',' << p.S << ')';
}

void ComputeAdvice(int *C, int n, int k, int M){

    vector<int> ans(k + n);

    vector<int> lst(n, -1);
    vector<queue<int>> pos(n);
    for(int i = 0; i < n; i++){
        pos[C[i]].push(k + i);
    }
    for(int i = 0; i < n; i++) pos[i].push(k + n);

    set<pii> st;
    for(int i = 0; i < k; i++){
        lst[i] = i;
        st.insert(mp(pos[i].front(), i));
    }

    for(int i = 0; i < n; i++){
        int c = C[i];
        if(lst[c] != -1){
            st.erase(mp(pos[c].front(), c));
            pos[c].pop();
            st.insert(mp(pos[c].front(), c));
            continue;
        }

        int r = st.rbegin()->S;
        st.erase(prev(st.end()));
        ans[lst[r]] = 1;
        lst[r] = -1;
        lst[c] = k + i;
        st.erase(mp(pos[c].front(), c));
        pos[c].pop();
        st.insert(mp(pos[c].front(), c));
    }

    for(int i : ans) WriteAdvice(i);

}
#include "assistant.h"

#include <bits/stdc++.h>
#include <bits/extc++.h>

#define StarBurstStream ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define iter(a) a.begin(), a.end()
#define riter(a) a.rbegin(), a.rend()
#define lsort(a) sort(iter(a))
#define gsort(a) sort(riter(a))
#define pb(a) push_back(a)
#define eb(a) emplace_back(a)
#define pf(a) push_front(a)
#define ef(a) emplace_front(a)
#define pob pop_back()
#define pof pop_front()
#define mp(a, b) make_pair(a, b)
#define F first
#define S second
#define mt make_tuple
#define gt(t, i) get<i>(t)
#define tomax(a, b) ((a) = max((a), (b)))
#define tomin(a, b) ((a) = min((a), (b)))
#define topos(a) ((a) = (((a) % MOD + MOD) % MOD))
#define uni(a) a.resize(unique(iter(a)) - a.begin())
#define printv(a, b) {bool pvaspace=false; \
for(auto pva : a){ \
    if(pvaspace) b << " "; pvaspace=true;\
    b << pva;\
}\
b << "\n";}

using namespace std;
using namespace __gnu_pbds;

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pdd = pair<ld, ld>;
using tiii = tuple<int, int, int>;

const ll MOD = 1000000007;
const ll MAX = 2147483647;

template<typename A, typename B>
ostream& operator<<(ostream& o, pair<A, B> p){
    return o << '(' << p.F << ',' << p.S << ')';
}

void Assist(unsigned char *A, int n, int k, int R) {

    set<int> q;
    vector<bool> ok(n);
    for(int i = 0; i < k; i++){
        if(A[i]) q.insert(i);
        ok[i] = true;
    }

    for(int i = k; i < k + n; i++){
        int c = GetRequest();
        q.erase(c);
        if(!ok[c]){
            int r = *q.begin();
            q.erase(r);
            PutBack(r);
            ok[r] = false;
            ok[c] = true;
        }
        if(A[i]) q.insert(c);
    }

}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 492 KB Output is correct
2 Incorrect 1 ms 620 KB Error - Putting back a color that is not on the scaffold
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 17 ms 7724 KB Error - Putting back a color that is not on the scaffold
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 160 ms 58400 KB Error - Putting back a color that is not on the scaffold
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 9 ms 3484 KB Error - Putting back a color that is not on the scaffold
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 195 ms 72052 KB Error - Putting back a color that is not on the scaffold
2 Incorrect 205 ms 72404 KB Error - Putting back a color that is not on the scaffold
3 Incorrect 207 ms 72460 KB Error - Putting back a color that is not on the scaffold
4 Incorrect 206 ms 72348 KB Error - Putting back a color that is not on the scaffold
5 Incorrect 209 ms 72348 KB Error - Putting back a color that is not on the scaffold
6 Incorrect 208 ms 72392 KB Error - Putting back a color that is not on the scaffold
7 Incorrect 208 ms 72280 KB Error - Putting back a color that is not on the scaffold
8 Incorrect 209 ms 72728 KB Error - Putting back a color that is not on the scaffold
9 Incorrect 206 ms 72256 KB Error - Putting back a color that is not on the scaffold
10 Incorrect 197 ms 71768 KB Error - Putting back a color that is not on the scaffold