Submission #1180333

#TimeUsernameProblemLanguageResultExecution timeMemory
1180333n3rm1n최후의 만찬 (IOI12_supper)C++20
0 / 100
199 ms8944 KiB
#include<bits/stdc++.h>
#include "advisor.h"
using namespace std;
const int maxn = 1e5 + 10;
int last[maxn], bitcnt;
int getlog(int x)
{

    for (int i = 0; i < 20; ++ i)
    {
        int p = (1 << i);
        if(p >= x)return i;
    }
}
void givebits(int x)
{
    for (int i = 0; i < bitcnt; ++ i)
    {
        if((1 << i) & x)WriteAdvice(1);
        else WriteAdvice(0);
    }
}
map < int, int > mp;
void ComputeAdvice(int *C, int N, int K, int M)
{
    mp.clear();
    int n = N;
    int k = K;
    int m = M;
    bitcnt = getlog(N);
    for (int i = 0; i < n; ++ i)
        last[i] = n;
    for (int i = 0; i < n; ++ i)
    {
        last[C[i]] = i;
    }
    set < pair < int, int > > q;
     for (int i = 0; i < K; ++ i)
    {
        mp[i] = 1;
        q.insert(make_pair(last[i], i));
    }
    for (int i = 0; i < n; ++ i)
    {
      ///  cout << " want " << C[i] << endl;
        if(mp[C[i]])WriteAdvice(0);
        else
        {
            WriteAdvice(1);
            pair < int, int > w = *q.rbegin();

            int index = w.second;
           // cout << " remove " << index << endl;
            q.erase(w);
            givebits((index));
            q.insert(make_pair(last[C[i]], C[i]));
            mp[index] = 0;
            mp[C[i]] = 1;
        }
        if(last[C[i]] == i)
        {
            q.erase(make_pair(i, C[i]));
            q.insert(make_pair(n, C[i]));
        }
    }
}
#include <bits/stdc++.h>
#include "assistant.h"
#define pb push_back
using namespace std;
const int maxnn = 1e5 + 10;
vector < int > g;
int n, bitche;
int getlog2(int x)
{

    for (int i = 0; i < 20; ++ i)
    {
        int p = (1 << i);
        if(p >= n)return i;
    }
}
int curr_bit = 0;
int get_bits()
{
    int ans = 0;
    for (int i = 0; i < bitche; ++ i)
    {
        if(g[curr_bit])ans = (ans | (1 << i));
        curr_bit ++;
    }
    return ans;
}

void Assist(unsigned char *A, int N, int K, int R)
{

    n = N;
    bitche = getlog2(N);
  for (int i = 0; i < R; ++ i)
  {
      g.pb(A[i]);
  }

    for (int i = 0; i < N; ++ i)
    {
        int curr = GetRequest();
       // cout << "i " << endl;
        int type = g[curr_bit];
      //  cout << " type = " << type << endl;
        curr_bit ++;
        if(type == 0)continue;
        int x = get_bits();
     //   cout << x << endl;
        PutBack(x);
    }
}

Compilation message (stderr)

# 1번째 컴파일 단계

advisor.cpp: In function 'int getlog(int)':
advisor.cpp:14:1: warning: control reaches end of non-void function [-Wreturn-type]
   14 | }
      | ^

# 2번째 컴파일 단계

assistant.cpp: In function 'int getlog2(int)':
assistant.cpp:16:1: warning: control reaches end of non-void function [-Wreturn-type]
   16 | }
      | ^
#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...