This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "advisor.h"
#include <map>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
int where[1000005];
int Next[1000005];
vector < int > when[100005];
map < int , int > how;
void ComputeAdvice(int *C, int N, int K, int M)
{
int t=0,now=1,xx,i,j;
while(now<K)
{
now*=2;
t++;
}
for(i=0;i<K;i++)
{
where[i]=i;
how[when[i][0]]=i;
}
for(i=K;i<N;i++) where[i]=-1;
for(i=0;i<N;i++) when[C[i]].push_back(i);
for(i=0;i<N;i++) when[C[i]].push_back(i+N);
for(i=0;i<N;i++) Next[i]=*upper_bound(when[C[i]].begin(),when[C[i]].end(),i);
for(i=0;i<N;i++)
{
if(how.find(i)!=how.end()) how.erase(i);
if(where[C[i]]==-1)
{
xx=where[prev(how.end())->second];
for(i=0;i<t;i++)
{
if(xx&(1<<i)) WriteAdvice(1);
else WriteAdvice(0);
}
}
how[Next[i]]=C[i];
}
}
#include "assistant.h"
int where2[1000005];
int what[1000005];
void Assist(unsigned char *A, int N, int K, int R) {
int t=0,now=1,xx=0,how,tt=0,i,j;
while(now<K)
{
now*=2;
t++;
}
for(i=0;i<K;i++)
{
where2[i]=i;
what[i]=i;
}
for(i=K;i<N;i++) where2[i]=-1;
for(i=0;i<N;i++)
{
how=GetRequest();
if(where2[how]==-1)
{
xx=0;
for(j=0;j<t;j++) xx+=A[j+tt]*(1<<j);
tt+=t;
PutBack(tt);
where2[how]=tt;
where2[what[tt]]=-1;
what[tt]=how;
}
}
}
Compilation message (stderr)
advisor.cpp: In function 'void ComputeAdvice(int*, int, int, int)':
advisor.cpp:13:21: warning: unused variable 'j' [-Wunused-variable]
13 | int t=0,now=1,xx,i,j;
| ^
# | 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... |