제출 #635488

#제출 시각아이디문제언어결과실행 시간메모리
635488Bruteforceman최후의 만찬 (IOI12_supper)C++11
8 / 100
369 ms19608 KiB
    #include "advisor.h"
    #include <vector>
    #include <set>
    #include <cmath>
    using namespace std;
    void ComputeAdvice(int *C, int N, int K, int M) {
        int logn=13;
        for(int i=0;i<N;i++){
            int x=C[i];
            for(int j=0;j<logn;j++){
                if(x&1)WriteAdvice(1);
                else WriteAdvice(0);
                x/=2;
            }
        }
    }
    #include "assistant.h"
    #include <vector>
    #include <set>
    #include <cmath>
    using namespace std;
    void Assist(unsigned char *A, int N, int K, int R) {
          int logn=13;
          vector<int> V(N),cnt(N);
          set<int> S;
          set<pair<int,int>> M;
          for(int i=0;i<K;i++)S.insert(i);
          for(int i=0;i<N;i++){
            for(int j=logn-1;j>=0;j--){
                V[i]*=2;
                V[i]+=(int)(A[i*logn+j]);
            }
          }
          vector<vector<int>> needed(N,vector<int>());
          for(int i=0;i<N;i++){
            needed[V[i]].push_back(i);
          }
          for(int i=0;i<N;i++)needed[i].push_back(N);
          for(int i=0;i<K;i++){
            M.insert({-needed[i][0],i});
          }
          for (int i = 0; i < N; i++) {
            int req = GetRequest();
            if (S.find(req)==S.end()){
                auto it=M.begin();
                S.erase(it->second);
                S.insert(req);
                PutBack(it->second);
                M.erase(it);
                cnt[req]++;
                M.insert({-needed[req][cnt[req]],req});
            }
            else{
                M.erase({-needed[req][cnt[req]],req});
                cnt[req]++;
                M.insert({-needed[req][cnt[req]],req});
            }
          }
    }
#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...