Submission #138107

#TimeUsernameProblemLanguageResultExecution timeMemory
138107zoooma13최후의 만찬 (IOI12_supper)C++14
0 / 100
241 ms17384 KiB
#include "bits/stdc++.h"
#include "advisor.h"
using namespace std;

void ComputeAdvice(int *C, int N, int K, int M) {
    vector <vector<int>> occ(N);
    for(int i=0; i<N; i++)
        occ[i].push_back(1e9);
    for(int i=N-1; ~i; i--)
        occ[C[i]].push_back(i);

    priority_queue <pair<int ,int>> pq;
    set <int> shelf;
    for(int i=0; i<K; i++){
        pq.push({occ[i].back() ,i});
        shelf.insert(i);
    }

    vector <bool> seq(N+K ,1);
    vector <int> lst(N ,-1);
    iota(lst.begin() ,lst.begin()+K ,0);
    for(int i=0; i<N; i++){
        if(shelf.count(C[i]))
            continue;

        auto now = pq.top(); pq.pop();
        assert(lst[now.second] != -1);
        shelf.erase(now.second);
        seq[lst[now.second]] = 0;
        shelf.insert(C[i]);
        occ[C[i]].pop_back();
        pq.push({occ[C[i]].back() ,C[i]});
        lst[C[i]] = K+i;
    }

    for(int i=0; i<seq.size(); i++)
        WriteAdvice(seq[i]);
}
#include "bits/stdc++.h"
#include "assistant.h"
using namespace std;

void Assist(unsigned char *A, int N, int K, int R) {
    vector <bool> seq(R);
    for(int i=0; i<R; i++)
        seq[i] = A[i];

    vector <int> can_remove;
    set <int> shelf;
    for(int i=0; i<K; i++){
        if(!seq[i])
            can_remove.push_back(i);
        shelf.insert(i);
    }

    for(int i=K; i<R; i++){
        int now = GetRequest();
        if(!shelf.count(now)){
            PutBack(can_remove.back());
            shelf.erase(can_remove.back());
            can_remove.pop_back();
            shelf.insert(now);
        }
        if(!seq[i])
            can_remove.push_back(now);
    }
}

Compilation message (stderr)

advisor.cpp: In function 'void ComputeAdvice(int*, int, int, int)':
advisor.cpp:36:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<seq.size(); i++)
                  ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...