Submission #1357146

#TimeUsernameProblemLanguageResultExecution timeMemory
1357146Faisal_SaqibPopeala (CEOI16_popeala)C++17
26 / 100
2033 ms1844 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e4+10;
int p[N];
ll r[N];
int dp[N][51];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n,t,s;
    cin>>n>>t>>s;
    for(int i=1;i<=t;i++)
    {
        cin>>p[i];
        p[i]+=p[i-1];
    }
    for(int i=0;i<n;i++)
    {
        string q;
        cin>>q;
        for(int j=1;j<=t;j++)
        {
            if(q[j-1]=='1')
                r[j]|=(1ll<<i);
        }
    }
    for(int i=0;i<=t;i++)
    {
        for(int j=0;j<=s;j++)
        {
            dp[i][j]=2e9+10;
        }
    }
    dp[0][0]=0;
    for(int i=1;i<=t;i++)
    {
        for(int j=1;j<=s;j++)
        {
            ll ad=(1ll<<n)-1;
            for(int ip=i;ip>0;ip--)
            {
                ad&=r[ip];
                dp[i][j]=min(dp[i][j],dp[ip-1][j-1]+(__builtin_popcountll(ad)*(p[i]-p[ip-1])));
            }
        }
    }
    for(int j=1;j<=s;j++)
    {
        cout<<dp[t][j]<<endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...