| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1306925 | MunkhErdene | 선물 (IOI25_souvenirs) | C++17 | 0 ms | 0 KiB |
#include "souvenirs.h"
#include <utility>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
void buy_souvenirs(int N, long long P0) {
ll n = N;
ll p0 = P0;
vector<ll> tar(n), cnt(n, 0);
iota(tar.begin(), tar.end(), 0);
ll pre = 0;
ll cur = p0 - 2;
while(cur >= 0){
if(pre == n - 1) break;
if(cnt[])
if(pre != n - 1 && cur == 0) cur = 1;
auto res = transaction(cur);
cnt[res.first[0]]++;
if(res.first[0] == pre + 1) {
for(;cnt[res.first[0]] < tar[res.first[0]]; cnt[res.first[0]]++) {
transaction(cur);
}
cur -= 2;
pre = res.first[0];
continue;
}
else{
for(;cnt[res.first[0] - 1] < tar[res.first[0] - 1]; cnt[res.first[0] - 1]++) {
transaction(cur + 1);
}
}
}
return;
}
