제출 #1256674

#제출 시각아이디문제언어결과실행 시간메모리
1256674medmdgSouvenirs (IOI25_souvenirs)C++20
22 / 100
0 ms412 KiB
#include "souvenirs.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; void sub1(int N, long long P0) { pair<vector<int>, long long> res = transaction(P0-1); } void sub2(int N, ll P0){ for(int i=N-1;i>0;i--){ for(int j=N;j>i;j--){ transaction(i); } } } void sub3(int N,ll P0){ vector<ll> rem(N); for(int i=0;i<N;i++){ rem[i]=i; } ll cost=P0-1; for(int i=1;i<N;i++){ pair<vector<int>, long long> res =transaction(cost); for(auto x:res.first)rem[x]--; if(res.first.size()>1||res.second)cost--; while(rem[i]){ res=transaction(cost); for(auto x:res.first)rem[x]--; } cost--; } } void sub4(int N, long long P0) { pair<vector<int>, long long> res = transaction(P0-1); ll cost=P0-1-res.second; //cout<<"#"<<cost<<endl; if(res.first.size()>1) transaction(cost/2); else{ transaction(cost-1); transaction(cost-1); } } pair<vector<int>, long long> ask(ll cost,vector<ll> &v){ pair<vector<int>, long long> res = transaction(cost); for(auto x:res.first)v[x]--; return res; } void sub5(int N,ll P0){ vector<ll> rem(N); for(int i=0;i<N;i++){ rem[i]=i; } vector<ll> costs(N,0); costs[0]=P0; pair<vector<int>, long long> res; ll cost=P0; while(1){ cost/=2; pair<vector<int>, long long> res=ask(cost,rem); if(res.first.size()==1 && res.first[0]==N-2){ cost-=1+res.second; cost*=2; } if(res.first[0]==N-1){ cost-=res.second; costs.back()=cost; break; } } for(int i=N-2;rem[i];i--){ cost*=2; pair<vector<int>, long long> res=ask(cost,rem); for(auto x:res.first)cost-=costs[x]; cost-=res.second; costs[i]=cost; } return ; for(int i=0;i<N;i++){ while(rem[i]){ ask(costs[i],rem); } } for(int i=0;i<N;i++){ cout<<costs[i]<<" "; } cout<<endl; } void buy_souvenirs(int N, long long P0) { if(N==3)sub4(N,P0); else if(N==2) sub1(N,P0); else sub5(N,P0); 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...