# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1278410 | dang_minh_duc | 선물 (IOI25_souvenirs) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "souvenirs.h"
#define int long long
using namespace std;
void buy_souvenirs(int n, long long P0){
vector<int>cnt(n, 0), p(n, 0);
p[0]=P0;
for (int i=0;i<n-1;i++) {
if (p[i+1]) continue;
auto [arr, d]=transaction(p[i]-1);
if (d==1 || arr.size()==2) p[i+1]=p[i]-2;
else p[i+1]=p[i]-1;
for (int x:arr) cnt[x]++;
}
for (int i=1;i<n;i++) {
for (int j=cnt[i]+1;j<=i;j++) transaction(p[i]);
}
}