| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1341621 | hyyh | 선물 (IOI25_souvenirs) | C++20 | 13 ms | 412 KiB |
#include "souvenirs.h"
#include <utility>
#include <vector>
#include <map>
#include <iostream>
using namespace std;
using ll = long long;
#define endl '\n'
#define f first
#define s second
void buy_souvenirs(int N, long long P0) {
vector<int> minP(N);
vector<int> maxP(N);
vector<int> cnt(N);
map<int,vector<int>> wait;
vector<pair<int,pair<vector<int>,ll>>> query;
int cur = N-1;
minP[0] = P0;
maxP[0] = P0;
for(int i{1};i < N;i++){
maxP[i] = maxP[i-1]-1;
minP[i] = N-i;
}
while(cur != 0){
// cout << "Max : ";
// for(auto k:maxP) cout << k << " ";
// cout << endl;
// cout << "Min : ";
// for(auto k:minP) cout << k << " ";
// cout << endl;
pair<vector<int>,ll> ret = transaction(maxP[cur]);
int use = maxP[cur]-ret.s;
query.push_back({ret.f.size(),{ret.f,use}});
for(auto k:ret.f){
wait[k].emplace_back(query.size()-1);
use -= minP[k];
cnt[k]++;
}
//cout << use << endl;
for(auto k:ret.f){
maxP[k] = use+minP[k];
}
for(int i{1};i < N;i++){
maxP[i] = min(maxP[i],maxP[i-1]-1);
}
for(int i{1};i < N-1;i++){
minP[i] = max(minP[i],minP[i+1]+1);
}
for(auto [a,b]:query){
if(a == 1){
int val = b.s;
int notf = -1;
for(auto k:b.f){
if(minP[k] == maxP[k]){
val -= minP[k];
}
else notf = k;
}
if(notf != -1){
minP[notf] = val;
maxP[notf] = val;
}
}
}
cur = 0;
for(int i{1};i < N;i++){
if(minP[i] != maxP[i]) cur = max(cur,i);
else{
for(auto k:wait[i]){
query[k].f--;
}
wait[i].clear();
}
}
for(int i{1};i < N-1;i++){
minP[i] = max(minP[i],minP[i+1]+1);
}
}
for(int i{};i < N;i++){
while(cnt[i] < i){
transaction(maxP[i]);
cnt[i]++;
}
}
return;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
