Submission #874914

#TimeUsernameProblemLanguageResultExecution timeMemory
874914Faisal_SaqibPopeala (CEOI16_popeala)C++17
17 / 100
201 ms262144 KiB
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#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];
inline int read() {
    char c = getchar();
    int x = 0, s = 1;
    while (c < '0' || c > '9') {
        if (c == '-')
            s = -1;
        c = getchar();
    }
    while (c >= '0' && c <= '9') {
        x = x * 10 + c - '0';
        c = getchar();
    }
    return x * s;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    n=read();
    t=read();
    s=read();
    // scanf("%d %d %d",&n,&t,&s);
    for(int i=0;i<t;i++)
    {
        points=read();
        // 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=1;i<=t;i++)
    {
        dp[i][0]=inf;
        for(int j=1;j<=i;j++)
            zeros[j][i]+=zeros[j-1][i];
    }
    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++)
                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 (stderr)

popeala.cpp: In function 'int main()':
popeala.cpp:47:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |         scanf("%s",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...