Submission #1188029

#TimeUsernameProblemLanguageResultExecution timeMemory
1188029user736482Let's Win the Election (JOI22_ho_t3)C++20
100 / 100
1736 ms8516 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pb push_back #define ff first #define ss second #define MOD 1000000009 #define INF 1000000019 #define INFL 1000000000000000099LL ll a,b,c,d,t,n,m,l,q,k,ak; ld ans=INFL,ak2; vector<pair<ld,ld>>in; ld dp1[507][507];//dla sufiksu i chcac j glosow ld dp2[507][507];//dla prefiksu i-1, majac j-1 pomocnikow void f(ll x){ for(ll i=0;i<507;i++){ dp1[i][0]=0; dp2[i][0]=INFL; for(ll j=1;j<507;j++){ dp1[i][j]=INFL; dp2[i][j]=INFL; } } for(ll i=n-1;i>=0;i--){ for(ll j=1;j<=k;j++){ dp1[i][j]=min(dp1[i+1][j],dp1[i+1][j-1]+in[i].ss/(x+1)); } } dp2[0][1]=0; for(ll i=1;i<=n;i++){ for(ll j=1;j<=k+1;j++){ dp2[i][j]=min(dp2[i-1][j]+in[i-1].ss/(x+1),dp2[i-1][j-1]+(j!=1)*(in[i-1].ff/(j-1))); } } for(ll i=0;i<=n;i++){ ans=min(ans,dp2[i][x+1]+dp1[i][max(0LL,k-i)]); } } int main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>k; for(ll i=0;i<n;i++){ cin>>a>>b; if(b==-1)b=INFL; in.pb({b,a}); } sort(in.begin(),in.end()); for(ll i=0;i<k;i++)f(i); cout<<setprecision(20)<<ans; 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...