Submission #7969

#TimeUsernameProblemLanguageResultExecution timeMemory
7969dohyun0324Last supper (IOI12_supper)C++98
0 / 100
99 ms8888 KiB
#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[100010],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 (stderr)

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