답안 #14784

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
14784 2015-06-24T05:41:37 Z gs14004 앵무새 (IOI11_parrots) C++14
컴파일 오류
0 ms 0 KB
#include "encoder.h"
#include "encoderlib.h"
#include <cstdio>
#include <cstring>
using namespace std;

struct bignum{
    short arr[100];
    void init(char i){
        memset(arr,0,sizeof(arr));
        arr[0] = i;
    }
};

bignum operator+(bignum a, bignum b){
    for (int i=0; i<100; i++) {
        a.arr[i] += b.arr[i];
        if(a.arr[i] >= 256) {
            a.arr[i] -= 256;
            a.arr[i+1] ++;
        }
    }
    return a;
}

bool operator<(bignum a, bignum b){
    for (int i=99; i>=0; i--) {
        if(a.arr[i] < b.arr[i]) return 1;
        if(a.arr[i] > b.arr[i]) return 0;
    }
    return 0;
}

bignum bino[600][600];

void encode(int N, int* M){
    for (int i=0; i<600; i++) {
        bino[i][0].init(1);
        for (int j=1; j<=i; j++) {
            bino[i][j] = bino[i-1][j] + bino[i-1][j-1];
        }
        for (int j=i+1; j<600; j++) {
            bino[i][j].init(0);
        }
    }
    bignum t, base;
    for (int i=0; i<N; i++) {
        t.arr[i] = M[i];
    }
    base.init(2);
    t = t + base;
    base.init(0);
    int cnt = 0;
    while (cnt < 5 * N){
        int length = 5 * N - cnt;
        while (bino[length+1][5 * N - cnt] + base < t) {
            length++;
        }
        send(5 * N + 255 - length - cnt);
        base = base + bino[length - 1][5 * N - cnt];
        cnt++;
    }
}
#include "decoder.h"
#include "decoderlib.h"
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;

struct bignum{
    short arr[100];
    void init(char i){
        memset(arr,0,sizeof(arr));
        arr[0] = i;
    }
};

bignum operator+(bignum a, bignum b){
    for (int i=0; i<100; i++) {
        a.arr[i] += b.arr[i];
        if(a.arr[i] >= 256) {
            a.arr[i] -= 256;
            a.arr[i+1] ++;
        }
    }
    return a;
}

bool operator<(bignum a, bignum b){
    for (int i=99; i>=0; i--) {
        if(a.arr[i] < b.arr[i]) return 1;
        if(a.arr[i] > b.arr[i]) return 0;
    }
    return 0;
}

bignum bino[600][600];

void decode(int N, int L, int X[])
{
    for (int i=0; i<600; i++) {
        bino[i][0].init(1);
        for (int j=1; j<=i; j++) {
            bino[i][j] = bino[i-1][j] + bino[i-1][j-1];
        }
        for (int j=i+1; j<600; j++) {
            bino[i][j].init(0);
        }
    }
    sort(X,X+L);
    reverse(X,X+L);
    bignum ret;
    ret.init(0);
    for (int i=0; i<L; i++) {
        ret = ret + bino[5 * N + 255 - arr[i] - i-1][5 * N - i];
    }
}

Compilation message

decoder.cpp: In function 'void decode(int, int, int*)':
decoder.cpp:53:40: error: 'arr' was not declared in this scope
         ret = ret + bino[5 * N + 255 - arr[i] - i-1][5 * N - i];
                                        ^~~