Submission #1177479

#TimeUsernameProblemLanguageResultExecution timeMemory
117747912345678Popeala (CEOI16_popeala)C++17
100 / 100
194 ms17200 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const ll nx=55, tx=2e4+5, inf=1e18; ll n, t, s, qs[tx], dp[nx][tx], mn[nx], lst[tx][nx]; char c; int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>t>>s; for (int i=1; i<=t; i++) cin>>qs[i], qs[i]+=qs[i-1]; for (int i=1; i<=n; i++) { for (int j=1; j<=t; j++) { cin>>c; if (c=='1') lst[j][i]=lst[j-1][i]; else lst[j][i]=j; } } for (int i=1; i<=t; i++) lst[i][0]=i, sort(lst[i], lst[i]+n+1); for (int i=0; i<=s; i++) for (int j=0; j<=t; j++) dp[i][j]=inf; dp[0][0]=0; for (int i=1; i<=s; i++) { for (int j=0; j<=n; j++) mn[j]=inf; for (int j=1; j<=t; j++) { for (int k=0; k<=n; k++) { for (int idx=lst[j-1][k]; idx<lst[j][k]; idx++) mn[k]=min(mn[k], dp[i-1][idx]-k*qs[idx]); dp[i][j]=min(dp[i][j], mn[k]+qs[j]*k); } //cout<<"debug "<<i<<' '<<j<<' '<<dp[i][j]<<'\n'; } cout<<dp[i][t]<<'\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...