| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 1252287 | tranvinhhuy2010 | 선물 (IOI25_souvenirs) | C++20 | 0 ms | 412 KiB | 
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, last, cnt[105] = {};
ll p[105] = {};
ll adu_calculate(ll s, int k) {
    s += k*(k-1)/2 + k - 1;
    return s/k;
}
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;
        adu_build(adu_calculate(sum, v.size()) - 1);
    }
    p[v[0]] = sum;
    last = 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) 메시지
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
