#include "advisor.h"
#include<queue>
using namespace std;
typedef pair<int,int> ppair;
priority_queue<ppair>q;
int a[100010],ch[100010],arr[100010],w,paint2[100010],dap[100010],pdap[25010];
void ComputeAdvice(int *C, int N, int K, int M)
{
int i,p,p2;
for(i=N-1;i>=0;i--)
{
if(ch[C[i]]==0) a[i]=N;
else a[i]=ch[C[i]];
ch[C[i]]=i;
}
for(i=0;i<K;i++)
{
paint2[i]=1;
if(ch[i]==0) q.push(make_pair(N,-i-1));
else q.push(make_pair(ch[i],-i-1));
arr[i]=-1;
}
for(i=0;i<=N-1;i++)
{
if(paint2[C[i]]==1)
{
arr[C[i]]=i; continue;
}
p=q.top().first; p2=q.top().second;
if(p2<=-1) pdap[-p2-1]=1;
else dap[arr[C[p2]]]=1;
if(p2<=-1) paint2[-p2-1]--;
else paint2[C[p2]]--;
q.pop();
if(a[C[i]]==0) q.push(make_pair(N,i));
else q.push(make_pair(a[i],i));
paint2[C[i]]++;
arr[C[i]]=i;
}
for(i=0;i<K;i++)
{
if(arr[i]==-1) pdap[i]=1;
}
for(i=0;i<K;i++)
{
WriteAdvice(pdap[i]);
}
for(i=0;i<N;i++)
{
WriteAdvice(dap[i]);
}
}
#include "assistant.h"
int paint[25010],request[100010],st[100010],top,ch2[100010],c;
void Assist(unsigned char *A, int N, int K, int R)
{
int i;
for(i=0;i<K;i++) paint[i]=A[i];
for(i=0;i<N;i++) request[i]=A[K+i];
for(i=0;i<K;i++)
{
if(paint[i]==1) st[++top]=i;
ch2[i]++;
}
for(i=0;i<N;i++)
{
c=GetRequest();
if(ch2[c]==1)
{
if(request[i]==1) st[++top]=c;
continue;
}
PutBack(st[top]);
ch2[c]++;
ch2[st[top]]--;
st[top--]=0;
if(request[i]==1) st[++top]=c;
}
}
Compilation message
advisor.cpp: In function 'void ComputeAdvice(int*, int, int, int)':
advisor.cpp:9:11: warning: variable 'p' set but not used [-Wunused-but-set-variable]
int i,p,p2;
^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
612 KB |
Output is correct |
2 |
Incorrect |
4 ms |
824 KB |
Output isn't correct - not an optimal way |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
18 ms |
1712 KB |
Output isn't correct - not an optimal way |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
70 ms |
7200 KB |
Output isn't correct - not an optimal way |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
7 ms |
7200 KB |
Output isn't correct - not an optimal way |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
114 ms |
8424 KB |
Output isn't correct - not an optimal way |
2 |
Incorrect |
82 ms |
8536 KB |
Output isn't correct - not an optimal way |
3 |
Incorrect |
84 ms |
8744 KB |
Output isn't correct - not an optimal way |
4 |
Incorrect |
81 ms |
8744 KB |
Output isn't correct - not an optimal way |
5 |
Incorrect |
81 ms |
8744 KB |
Output isn't correct - not an optimal way |
6 |
Incorrect |
80 ms |
8744 KB |
Output isn't correct - not an optimal way |
7 |
Incorrect |
101 ms |
8744 KB |
Output isn't correct - not an optimal way |
8 |
Incorrect |
84 ms |
8744 KB |
Output isn't correct - not an optimal way |
9 |
Incorrect |
82 ms |
8744 KB |
Output isn't correct - not an optimal way |
10 |
Correct |
80 ms |
8744 KB |
Output is correct - 125000 bits used |