답안 #740439

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
740439 2023-05-12T13:17:41 Z Ahmed57 조교 (CEOI16_popeala) C++14
9 / 100
71 ms 1236 KB
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>

using namespace std;
int main(){
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int n,t,s;cin>>n>>t>>s;
    vector<string>r(n+1);
    int p[t+1] = {0};for(int i = 1;i<=t;i++)cin>>p[i],p[i]+=p[i-1];
    for(int i = 1;i<=n;i++)cin>>r[i];
    int a[t+1][n+1];memset(a,0,sizeof a);
    for(int i = 1;i<=t;i++){
        for(int j = 1;j<=n;j++){
            a[i][j] = (r[j][i-1]=='0'?i:a[i-1][j]);
        }
    }
    for(int i = 1;i<=t;i++){
        a[i][0] = i;
        sort(a[i],a[i]+n+1);
    }
    int dp[s+1][t+1];
    dp[0][0] = 0;
    for(int i = 1;i<=t;i++)dp[0][i] = 1e9;
    for(int i = 1;i<=s;i++){
        dp[i][0] = 1e9;
        for(int j = 1;j<=t;j++){
            dp[i][j] = 1e9;
            for(int k = 0;k<=n;k++){
                int val = 1e9;
                for(int l = (k==0?0:a[j-1][k]);l<a[j][k];l++){
                    val = min(val,dp[i-1][l]+(k*(p[j]-p[l])));
                }
                dp[i][j] = min(dp[i][j],val);
            }
        }
        cout<<dp[i][t]<<"\n";
    }
}
//
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 544 KB Output is correct
2 Correct 6 ms 536 KB Output is correct
3 Correct 7 ms 548 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 71 ms 1236 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -