Submission #153997

#TimeUsernameProblemLanguageResultExecution timeMemory
153997stefdascaLast supper (IOI12_supper)C++14
0 / 100
206 ms9600 KiB
#include<bits/stdc++.h>
#include "advisor.h"
using namespace std;

void ComputeAdvice(int *C, int N, int K, int M)
{
    int frq[100002];
    memset(frq, 0, sizeof(frq));
    for(int i = 0; i < N; ++i)
        frq[C[i]]++;
    for(int i = 0; i < N; ++i)
    {
        for(int j = 1; j <= frq[i]; ++j)
            WriteAdvice(0);
        WriteAdvice(1);
    }
}
#include<bits/stdc++.h>
#include "assistant.h"
using namespace std;

void Assist(unsigned char *A, int N, int K, int R)
{
    int frq[100002];
    memset(frq, 0, sizeof(frq));
    int poz = 0;
    for(int i = 0; i < R; ++i)
    {
        if(A[i] == '1')
            ++poz;
        else
            ++frq[poz];
    }
    bool is[100002];
    memset(is, 0, sizeof(is));
    set<pair<int, int> >frq1;
    set<pair<int, int> >frq2;
    for(int i = 0; i < K; ++i)
        frq1.insert({frq[i], i}), is[i] = 1;
    for(int i = 0; i < N; ++i)
    {
        int color = GetRequest();
        if(!is[color])
        {
            pair<int, int> p = *frq1.begin();
            frq1.erase(p);
            PutBack(p.second);
            is[p.second] = 0;
            is[color] = 1;
            frq2.insert(p);
            frq1.insert({frq[color], color});
            frq2.erase({frq[color], color});
        }
        frq1.erase({frq[color], color});
        --frq[color];
        frq1.insert({frq[color], color});
    }
}


#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...