제출 #1288620

#제출 시각아이디문제언어결과실행 시간메모리
1288620alexrana2626선물 (IOI25_souvenirs)C++20
25 / 100
13 ms400 KiB
#include "souvenirs.h" #include <bits/stdc++.h> using namespace std; void buy_souvenirs(int N, long long P0) { pair<vector<int>, long long> res; if (N == 2) { transaction(P0 - 1); return; } if (N == 3) { res = transaction(P0 - 1); long long x = res.second; if (res.first.size() == 2) { transaction((P0 - x - 1) / 2); return; } else { long long P1 = P0 - x - 1; transaction(P1 - 1); transaction(P1 - 1); return; } } if (P0 == N) { for (int i = 0; i < N; i++) { int j = i; while (j--) { transaction(N - i); } } return; } vector<long long> P(N, 0); P[0] = P0; vector<int> cnt(N, 0); cnt[0] = INT_MAX; set<int> s; for (int i = 1; i < N; i++) { long long x = P[i-1] - 1; int n = i - cnt[i]; while (cnt[i] < i) { res = transaction(x); for (int id : res.first) { if (cnt[id] < id) cnt[id]++; } if (cnt[i] < i) { x = P[i-1] - 2; } } P[i] = x; } 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...