Submission #859943

#TimeUsernameProblemLanguageResultExecution timeMemory
859943StefanSebezLet's Win the Election (JOI22_ho_t3)C++14
10 / 100
25 ms604 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second const int inf=1e9; int main() { int n,k;cin>>n>>k; pair<int,int>a[n+1]; multiset<pair<int,int> >st1,st2; for(int i=1;i<=n;i++) { cin>>a[i].se>>a[i].fi; if(a[i].fi!=-1)st1.insert(a[i]); st2.insert({a[i].se,a[i].fi}); } sort(a+1,a+n+1); long double res=inf; for(int j=0;j<k;j++) { int K=k,J=j; long double sum=0,c=1; multiset<pair<int,int> >ST1,ST2; ST1=st1; ST2=st2; while(!ST1.empty() && J>0) { pair<int,int>x=*ST1.begin(); if(x.fi!=-1) { sum+=(long double)x.fi/c; c++; J--; K--; ST2.erase(ST2.find({x.se,x.fi})); } ST1.erase(ST1.find(x)); } while(!ST2.empty() && K>0) { pair<int,int>x=*ST2.begin(); sum+=(long double)x.fi/c; if(x.fi==x.se) c++; K--; ST2.erase(ST2.find(x)); } if(res>sum) { res=sum; } } cout<<setprecision(9)<<fixed; cout<<res; return 0; }
#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...