제출 #1251807

#제출 시각아이디문제언어결과실행 시간메모리
1251807tranvinhhuy2010선물 (IOI25_souvenirs)C++20
컴파일 에러
0 ms0 KiB
//#include "souvenirs.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int n, last, cnt[105] = {};
ll p[105] = {};
vector <int> P = {12, 5, 3, 2, 1};

pair <vector <int>, ll> transaction(ll m) {
    vector <int> vec;
    for (int i=0; i<P.size(); i++) {
        if (m>=P[i]) {
            vec.push_back(i);
            m -= P[i];
        }
    }

    return {vec, m};
}

int adu_build(ll money) {
    auto [v, remain] = transaction(money);
    ll sum = money - remain;

    for (int i : v)
        cnt[i]++;

    while (v[0]<last) {
        while (v.back()>=last) {
            sum -= p[v.back()];
            v.pop_back();
        }

        if (v[0]+1==last) break;
        last = adu_build((sum-1)/v.size());
    }

    p[v[0]] = sum;
    return v[0];
}

void adu_complete() {
    for (int i=1; i<n; i++) {
        while (cnt[i]<i) {
            transaction(p[i]);
            cnt[i]++;
        }
    }
}

void buy_souvenirs(int N, ll P0) {
    n = last = N;
    p[0] = P0;
    adu_build(P0-1);
    adu_complete();
}

컴파일 시 표준 에러 (stderr) 메시지

/usr/bin/ld: /tmp/cchuZ2l0.o: in function `transaction(long long)':
stub.cpp:(.text+0x1d0): multiple definition of `transaction(long long)'; /tmp/ccZsnUNZ.o:souvenirs.cpp:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status