답안 #988839

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
988839 2024-05-26T12:38:08 Z lalig777 최후의 만찬 (IOI12_supper) C++14
0 / 100
44 ms 71072 KB
#include "advisor.h"
#include <iostream>
#include <vector>
#include <unordered_set>
#include <queue>
using namespace std;
 
void ComputeAdvice(int *C, int N, int K, int M){
    int digits;
    for (int i=0; i<21; i++){
        if ((1<<i)>=N-1){
            digits=i;
            break;
        }
    }
    if (K==1) return;
    unordered_set<int>current;
    priority_queue<pair<int,int>>next;
    vector<queue<int>>orden(N);
    for (int i=0; i<N; i++){
        int x=C[i];
        if (x<K){
            if (!(current.find(x)!=current.end())){
                next.push(make_pair(i, x));
                current.insert(x);
            }
        }orden[x].push(i);
    }for (int i=0; i<K; i++){
        if (!(current.find(i)!=current.end())){
            next.push(make_pair(1e9, i));
            current.insert(i);
        }
    }
    for (int i=0; i<N; i++){
        int x=C[i];
        orden[x].pop();
        int pos;
        if (orden[x].empty()) pos=1e9;
        else pos=orden[x].front();
        if (!(current.find(x)!=current.end())){
            current.insert(x);
            int remov=next.top().second;
            next.pop();
            current.erase(remov);
            for (int j=digits-1; j>=0; j--){
                int y=1<<j;
                if (remov>=y){
                    remov-=y;
                    WriteAdvice('1');
                }else WriteAdvice('0');
            }
        }
        next.push(make_pair(pos, x));
    }return;
}
#include "assistant.h"
#include <iostream>
#include <vector>
#include <unordered_set>
#include <queue>
using namespace std;
 
void Assist(unsigned char *A, int N, int K, int R){
    if (K==1){
        int now=0;
        for (int i=0; i<N; i++){
            int follow=GetRequest();
            if (follow!=now){
                PutBack(now);
                now=follow;
            }
        }return;
    }
    int digits, count=0;
    for (int i=0; i<21; i++){
        if ((1<<i)>=N){
            digits=i;
            break;
        }
    }
    unordered_set<int>current;
    for (int i=0; i<K; i++) current.insert(i);
    for (int i=0; i<N; i++){
        int follow=GetRequest();
        if (!(current.find(follow)!=current.end())){
            int remov=0;
            for (int j=0; j<digits; j++){
                if (A[j+count*digits]=='1') remov+=(1<<(digits-j-1));
            }count++;
            PutBack(remov);
            current.erase(remov);
            current.insert(follow);
        }
    }
}

Compilation message

advisor.cpp: In function 'void ComputeAdvice(int*, int, int, int)':
advisor.cpp:45:22: warning: 'digits' may be used uninitialized in this function [-Wmaybe-uninitialized]
   45 |             for (int j=digits-1; j>=0; j--){
      |                      ^

assistant.cpp: In function 'void Assist(unsigned char*, int, int, int)':
assistant.cpp:33:30: warning: 'digits' may be used uninitialized in this function [-Wmaybe-uninitialized]
   33 |                 if (A[j+count*digits]=='1') remov+=(1<<(digits-j-1));
      |                         ~~~~~^~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 784 KB Error - advice must be 0 or 1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 7776 KB Error - advice must be 0 or 1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 31 ms 57168 KB Error - advice must be 0 or 1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 3636 KB Error - advice must be 0 or 1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 37 ms 70764 KB Error - advice must be 0 or 1
2 Incorrect 36 ms 71024 KB Error - advice must be 0 or 1
3 Incorrect 38 ms 70840 KB Error - advice must be 0 or 1
4 Incorrect 39 ms 70864 KB Error - advice must be 0 or 1
5 Incorrect 37 ms 71072 KB Error - advice must be 0 or 1
6 Incorrect 37 ms 71048 KB Error - advice must be 0 or 1
7 Incorrect 38 ms 70728 KB Error - advice must be 0 or 1
8 Incorrect 37 ms 70860 KB Error - advice must be 0 or 1
9 Incorrect 44 ms 70920 KB Error - advice must be 0 or 1
10 Incorrect 39 ms 71068 KB Error - advice must be 0 or 1