제출 #1250654

#제출 시각아이디문제언어결과실행 시간메모리
1250654enerelt14선물 (IOI25_souvenirs)C++20
0 / 100
2 ms412 KiB
#include "souvenirs.h"
#include <utility>
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <chrono>
#include <climits>
#include <cmath>
#include <complex>
#include <cstring>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <vector>
using namespace std;

void buy_souvenirs(int N, long long P0) {
    long long price[N];
    int num[N] = {0};
    price[0] = P0;
    price[N - 1] = 1;
    num[N - 1] = 1;
    
    while(true) {
        pair<vector<int>, long long> res = transaction(price[N - 1]);
        if(!res.first.empty())
            break;
        price[N - 1]++;
    }

    for(int i = N - 2; i; i--) {
        pair<vector<int>, long long> res = transaction(min(price[i + 1] * 2, price[0] - 1));
        price[i] = res.second;
        for(auto x: res.first) {
            num[x]++;
            if(x != i)
                price[i] += price[x];
        }
        price[i] = min(price[i + 1] * 2, price[0] - 1) - price[i];
    }

    for(int i = 1; i < N; i++) {
        for(int j = 0; j < i - num[i]; j++)
            transaction(price[i]);
    }

    return;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...