# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
874910 | 2023-11-18T05:27:12 Z | Faisal_Saqib | 조교 (CEOI16_popeala) | C++17 | 187 ms | 172636 KB |
#include <iostream> #include <vector> #include <algorithm> using namespace std; const int T=2e4+1; const int N=51; const int inf=2e9; int points,n,t,s; int pre[T]; int zero[N]; int zeros[T][T]; int dp[T][2]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); scanf("%d %d %d",&n,&t,&s); for(int i=0;i<t;i++) { scanf("%d",&points); pre[i+1]=pre[i]+points; } char results[t]; for(int i=0;i<n;i++) { scanf("%s",results); for(int r=1;r<=t;r++) { if(results[r-1]=='0') zero[i]=r; else zeros[zero[i]+1][r]+=1; } } for(int i=0;i<=t;i++) dp[i][0]=inf; dp[0][0]=0; for(int j=0;j<s;j++) { for(int i=0;i<=t;i++) dp[i][(j+1)%2]=inf; for(int i=0;i<t;i++) { if(dp[i][j%2]==inf) continue; for(int new_i=i+1;new_i<=t;new_i++) { zeros[i+1][new_i]+=zeros[i][new_i]; dp[new_i][(j+1)%2]=min(dp[new_i][(j+1)%2],dp[i][j%2]+(pre[new_i]-pre[i])*zeros[i+1][new_i]); } } printf("%d\n",dp[t][(j+1)%2]); } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 2396 KB | Output is correct |
2 | Incorrect | 2 ms | 4444 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 14 ms | 41308 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 187 ms | 172636 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 2396 KB | Output is correct |
2 | Incorrect | 2 ms | 4444 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |