Submission #1258233

#TimeUsernameProblemLanguageResultExecution timeMemory
1258233mkkkkkkkkFestival (IOI25_festival)C++20
5 / 100
54 ms5564 KiB
#include "festival.h" #include <bits/stdc++.h> using namespace std; std::vector<int> max_coupons(int A, std::vector<int> P, std::vector<int> T) { vector<pair<int,int>> vec1,vec2; for(int i=0;i<P.size();i++) { if(T[i]==1) vec1.push_back({P[i],i}); else vec2.push_back({P[i],i}); } vector<int> res; bool pos=false; int i=0,j=0; long long br=A; long long n=P.size(); sort(vec2.begin(),vec2.end()); sort(vec1.begin(),vec1.end()); for(;j<vec2.size();j++) { if((long long)br-vec2[j].first>=(long long)10000000000*n/2) { pos=true; break; } else if(br-vec2[j].first>=br/2) { res.push_back(vec2[j].second); br=(br-vec2[j].first)*2; } else break; } if(pos==true) { for(;i<vec1.size();i++) res.push_back(vec1[i].second); for(;j<vec2.size();j++) res.push_back(vec2[j].second); return res; } else { for(;i<vec1.size() || j<vec2.size();) { if(i==vec1.size()) { if(br<vec2[j].first) break; else { br=(br-vec2[j].first)*2; res.push_back(vec2[j].second); j++; } } else if(j==vec2.size()) { if(br<vec1[i].first) break; else { br-=vec1[i].first; res.push_back(vec1[i].second); i++; } } else { if(br<vec1[i].first && br<vec2[j].first) break; int br1=br-vec1[i].first; int br2=(br-vec2[j].first)*2; if(br1>br2) { res.push_back(vec1[i].second); i++; } else { res.push_back(vec2[j].second); j++; } } } } return res; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...