이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "advisor.h"
#include<bits/stdc++.h>
using namespace std;
static int lst[100009], nxt[100009], realVal[200009];
static bool ap[100009], ans[200009];
static priority_queue < pair < int, int > > PQ;
void ComputeAdvice(int *C, int N, int K, int M)
{
for (int i=0; i<N; i++)
lst[i] = N + 1;
for (int i=N - 1; i>=0; i--)
{
nxt[i] = lst[C[i]];
lst[C[i]] = i;
}
for (int i=0; i<K; i++)
PQ.push ({lst[i], i}),
realVal[i] = lst[i], ap[i] = 1;
for (int i=0; i<N; i++)
{
if (ap[C[i]] == 1)
{
PQ.push ({nxt[i], i + K});
realVal[i + K] = nxt[i];
continue;
}
pair < int, int > curr;
int currC;
while (1)
{
curr = PQ.top ();
PQ.pop ();
if (curr.second < K) currC = curr.second;
else currC = C[curr.second - K];
if (realVal[curr.second] == curr.first && ap[currC] == 1)
break;
}
ap[currC] = 0, ans[curr.second] = 1;
ap[C[i]] = 1, PQ.push ({nxt[i], i + K});
realVal[i + K] = nxt[i];
}
for (int i=0; i<N + K; i++)
WriteAdvice (ans[i]);
}
#include "assistant.h"
#include<bits/stdc++.h>
using namespace std;
static bool ap[100009], dispensable[100009];
static queue < int > canDispense;
void Assist(unsigned char *A, int N, int K, int R)
{
for (int i=0; i<K; i++)
{
ap[i] = 1,
dispensable[i] = A[i];
if (dispensable[i])
canDispense.push (i);
}
for (int i = 0; i < N; i++)
{
int req = GetRequest();
if (ap[req])
{
if (A[K + i])
dispensable[req] = 1, canDispense.push (req);
continue;
}
assert (!canDispense.empty ());
{
int c = canDispense.front ();
canDispense.pop ();
ap[c] = 0;
PutBack (c);
}
if (A[K + i])
dispensable[req] = ap[req] = 1, canDispense.push (req);
else
ap[req] = 1;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |