답안 #7968

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
7968 2014-08-26T13:41:54 Z dohyun0324 최후의 만찬 (IOI12_supper) C++
0 / 100
114 ms 8744 KB
#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