Submission #1158776

#TimeUsernameProblemLanguageResultExecution timeMemory
1158776SmuggingSpunLast supper (IOI12_supper)C++20
0 / 100
18 ms1200 KiB
#include<bits/stdc++.h>
#include "advisor.h"
using namespace std;
void ComputeAdvice(int *C, int n, int k, int m){ 
    if(n <= 5000 && m == 65000){
        for(int i = 0; i < n; i++){
            for(int j = 0; j < 13; j++){
                WriteAdvice((1 << j & C[i]) ? 1 : 0);
            }
        }
        return;
    }
}
#include<bits/stdc++.h>
#include "assistant.h"
using namespace std;
void Assist(unsigned char *A, int n, int k, int R){
    if(n <= 5000 && R == 13 * n){
        vector<int>C;
        vector<vector<int>>p(n);
        for(int i = 0; i < n; i++){
            int num = 0;
            for(int j = 0; j < 13; j++){
                if(A[i * 13 + j] == 1){
                    num |= 1 << j;
                }
            }
            C.emplace_back(num);
            p[num].emplace_back(i);
        }
        for(int i = 0; i < n; i++){
            reverse(p[i].begin(), p[i].end());
        }
        vector<int>scaf(k);
        iota(scaf.begin(), scaf.end(), 0);
        for(int i = 0; i < n; i++){
            int color = GetRequest();
            if(find(scaf.begin(), scaf.end(), color) == scaf.end()){
                int candidate = 0;
                for(int i = 1; i < scaf.size(); i++){
                    int x = scaf[i];
                    while(!p[x].empty() && p[x].back() <= i){
                        p[x].pop_back();
                    }
                    if(p[x].empty() || (!p[scaf[candidate]].empty() && p[scaf[candidate]].back() > p[x].back())){
                        candidate = i;
                    }
                }
                PutBack(scaf[candidate]);
                swap(scaf[candidate], scaf.back());
                scaf.pop_back();
                scaf.emplace_back(color);
            }
        }
        return;
    }
}
#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...