| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1287954 | aleksandre | 선물 (IOI25_souvenirs) | C++20 | 0 ms | 0 KiB |
#include "souvenirs.h"
#include <utility>
#include <vector>
#include <iostream>
using namespace std;
void buy_souvenirs(int N, long long P0) {
pair<vector<int>, long long> res;
long long p;
if (N==2) {
res = transaction(P0-1); return;
} else
if (N==3) {
res = transaction(P0-1);
p = (P0-1-res.second);
if ((int)res.first.size()==2) {
res = transaction(p/2);
return;
} else {
res = transaction(p-1);
res = transaction(p-1);
return;
}
} else
if (P0==N) {
curp = P0-1;
for (int i = 1; i <= N-1; i++){
for (int j = 1; j <= i; j++)
res = transaction(p);
p--;
}
return;
} else {
int cnt1 = 0;
p = P0-1;
for (int i = 1; i < N-1; i++){
for (int j = 1; j <= i; j++) {
res = transaction(p);
if ((int)res.first.size() > 1) {
cnt1++;
p--;
}
if(res.second > 0) p--;
}
p--;
}
for (int i = cnt1+1; i <= N-1; i++)
res = transaction(p);
return;
}
return;
}
