# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1252157 | bzzzzzzzzzz | 선물 (IOI25_souvenirs) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
void buy_souvenirs(int N, long long P0) {
if (N == 2) {
pair<vector<int>, ll> p = transaction(P0 - 1);
} else if (N == 3) {
auto [v, s] = transaction(P0 - 1);
if ((int)v.size() == 1) {
transaction(P0 - s - 2);
transaction(P0 - s - 2);
} else {
transaction((P0 - 1 - s) / 2);
}
} else {
long long z = P0 - 1;
int p = 0;
for (int i = 1; i < N - 1; i++) {
auto [v, s] = transaction(z);
if ((int)v.size() == 2 || s == 1) {
p++;
z--;
for (int j = 1; j < i; j++) {
transaction(z);
}
z--;
} else {
for (int j = 1; j < i; j++) {
transaction(z);
}
z--;
}
}
for (int i = 0; i < N - 1 - p; i++) {
transaction(z);
}
}
}