Submission #1250879

#TimeUsernameProblemLanguageResultExecution timeMemory
1250879inksamuraiSouvenirs (IOI25_souvenirs)C++20
4 / 100
0 ms412 KiB
#include <bits/stdc++.h> #include "souvenirs.h" using namespace std; #define rep(i,n) for(int i=0;i<n;i++) #define per(i,n) for(int i=n-1;i>=0;i--) #define rng(i,c,n) for(int i=c;i<n;i++) #define all(a) a.begin(),a.end() #define sz(a) (int)a.size() #define fi first #define se second #define vec vector #define pb push_back typedef long long ll; typedef vector<int> vi; typedef pair<int,int> pii; void print(){cout<<'\n';} template<class h,class...t> void print(const h&v,const t&...u){cout<<v<<' ',print(u...);} typedef long double ld; void buy_souvenirs(int N, long long P0){ int n=N; ll p0=P0; p0--; if(n==2){ transaction(p0); return; } vi cnt(n); rng(i,1,n){ if(cnt[i]==i){ continue; } auto [vs,left]=transaction(p0); vi usd(n); ll sum=p0+left; for(auto v:vs){ usd[v]=1; cnt[v]+=1; } auto contains=[&](int pos)->bool{ if(pos>=n or pos<0){ return 0; } return usd[pos]; }; ld frac=0.7; // we will investigate i + 1 if(!contains(i+1) and !contains(i+2) and !contains(i+3)){ frac=0.7; }else if(contains(i+1) and !contains(i+2) and !contains(i+3)){ frac=0.5; }else if(!contains(i+1) and !contains(i+2) and contains(i+3)){ frac=0.6; }else if(contains(i+1) and !contains(i+2) and contains(i+3)){ frac=0.4; }else if(!contains(i+1) and contains(i+2) and !contains(i+3)){ frac=0.5; }else if(!contains(i+1) and contains(i+2) and contains(i+3)){ frac=0.5; }else if(contains(i+1) and contains(i+2) and !contains(i+3)){ frac=0.4; }else if(contains(i+1) and contains(i+2) and contains(i+3)){ frac=0.34; } p0=(ll)(frac*sum); } }
#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...