답안 #514833

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
514833 2022-01-18T14:36:59 Z andrei_boaca 최후의 만찬 (IOI12_supper) C++14
0 / 100
283 ms 262144 KB
#include <bits/stdc++.h>
#include "advisor.h"

using namespace std;
typedef pair<int,int> pii;
bool useful[200005];
int isthere[200005];
multiset<int> s;
deque<int> poz[200005];
int INF=1e9;
void ComputeAdvice(int *C, int N, int K, int M)
{
    for(int i=0;i<K;i++)
        poz[i].push_back(i);
    for(int j=0;j<N;j++)
        poz[C[j]].push_back(j+K);
    for(int i=0;i<=N+K;i++)
        useful[i]=0;
    for(int i=0;i<K;i++)
    {
        isthere[i]=i+1;
        poz[i].pop_front();
        if(poz[i].empty())
            s.insert(INF);
        else
            s.insert(poz[i].front());
    }
    for(int i=0;i<N;i++)
    {
        int nr=C[i];
        if(isthere[nr])
        {
            useful[isthere[nr]-1]=1;
            int p=poz[nr].front();
            s.erase(s.find(p));
        }
        else
        {
            auto it=prev(s.end());
            s.erase(it);
            int p=(*it);
            if(p<N&&p>=0)
                isthere[C[p]]=0;
        }
        isthere[nr]=poz[nr].front()+1;
        poz[nr].pop_front();
        if(poz[nr].empty())
            s.insert(INF);
        else
            s.insert(poz[nr].front());
    }
    for(int i=0;i<N+K;i++)
        WriteAdvice(char(useful[i]+'0'));
}
#include <bits/stdc++.h>
#include "assistant.h"

using namespace std;
typedef pair<int,int> pii;

set<pii> buffer;
int there[200005];
void Assist(unsigned char *A, int N, int K, int R)
{
    for(int i=0;i<K;i++)
    {
        int x=A[i]-'0';
        if(x==0)
            x=-1;
        buffer.insert({x,i});
        there[i]=x;
    }
    for(int i=K;i<N+K;i++)
    {
        int nr=GetRequest();
        if(there[nr])
            buffer.erase({there[nr],nr});
        else
        {
            auto it=buffer.begin();
            int nr=(*it).second;
            buffer.erase(it);
            there[nr]=0;
            PutBack(nr);
        }
        int x=A[i]-'0';
        if(x==0)
            x=-1;
        there[nr]=x;
        buffer.insert({x,nr});
    }
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 75 ms 135148 KB Error - advice must be 0 or 1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 178 ms 262144 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 117 ms 136732 KB Error - advice must be 0 or 1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 78 ms 135440 KB Error - advice must be 0 or 1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 239 ms 262144 KB Execution killed with signal 6
2 Incorrect 134 ms 137124 KB Error - advice must be 0 or 1
3 Incorrect 136 ms 137804 KB Error - advice must be 0 or 1
4 Incorrect 130 ms 137268 KB Error - advice must be 0 or 1
5 Incorrect 139 ms 137132 KB Error - advice must be 0 or 1
6 Incorrect 136 ms 137160 KB Error - advice must be 0 or 1
7 Incorrect 153 ms 137396 KB Error - advice must be 0 or 1
8 Incorrect 130 ms 137124 KB Error - advice must be 0 or 1
9 Incorrect 132 ms 137504 KB Error - advice must be 0 or 1
10 Runtime error 283 ms 262144 KB Execution killed with signal 6