Submission #536830

#TimeUsernameProblemLanguageResultExecution timeMemory
536830zaneyuPopeala (CEOI16_popeala)C++14
0 / 100
3 ms2900 KiB
/*input 2 3 3 4 3 5 101 110 */ #include<bits/stdc++.h> using namespace std; #define REP(i,n) for(int i=0;i<n;i++) #define MNTO(x,y) x=min(x,y) #define REP1(i,n) for(int i=1;i<=n;i++) #define ll long long const int maxn=2e4+5; int dp[maxn][55]; bool ok[maxn]; int arr[maxn]; string s[maxn]; int main(){ ios::sync_with_stdio(false),cin.tie(0); int n,m,S; cin>>n>>m>>S; REP1(i,m) cin>>arr[i]; REP(i,n) cin>>s[i],s[i]="0"+s[i]; REP(i,m+1) REP(j,S+1) dp[i][j]=INT_MAX; dp[0][0]=0; REP1(i,m){ int cnt=n; int sum=0; REP(a,n) ok[a]=1; for(int j=i;j>=0;j--){ if(j!=i){ REP1(k,S){ if(dp[j][k-1]==INT_MAX) continue; MNTO(dp[i][k],dp[j][k-1]+cnt*sum); } } sum+=arr[j]; cnt=0; REP(a,n){ if(s[a][j]=='0') ok[a]=0; if(ok[a]) ++cnt; } } REP1(j,S) assert(dp[i][j]<=dp[i-1][j]); } REP1(j,S) cout<<dp[m][j]<<'\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...