Submission #621238

#TimeUsernameProblemLanguageResultExecution timeMemory
621238daisy2Bali Sculptures (APIO15_sculpture)C++14
71 / 100
1074 ms4308 KiB
#include<iostream>
#include<cstring>
#define endl '\n'
using namespace std;
long long n,a,b,m[2005],r,pref[2005],ts;
bool dp[2005][2005];
bool isposs(long long num)
{
    for(long long i=0;i<=2000;i++)
        memset(dp[i],0,sizeof(dp[i]));

    dp[0][0]=1;
    bool is=0;
    for(long long i=1;i<=n;i++)
    {
        for(long long j=i;j>=1;j--)
        {
            ts=pref[i]-pref[j-1];
            is=0;
            //if(ts>num) continue;
            for(long long bit=45;bit>=0;bit--)
            {
                if((((long long)1<<bit)&num)==0 && (((long long)1<<bit)&ts)==((long long)1<<bit))
                {
                    is=1;break;
                }
            }
            if(is==1) continue;

            for(long long brg=1;brg<=min(j,b);brg++)
            {
                dp[i][brg]|=dp[j-1][brg-1];
            }
        }
    }
    for(long long i=a;i<=b;i++)
    {
       if(dp[n][i]==1) return 1;
    }
    return 0;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>n>>a>>b;

    for(long long i=1;i<=n;i++)
    {
        cin>>m[i];

        pref[i]=pref[i-1]+m[i];
    }

    r=(((long long)1<<46)-1);

    for(long long i=45;i>=0;i--)
    {
        r^=((long long)1<<i);//cout<<i<<" "<<r<<endl;
        if(isposs(r)==0)
        {
            r|=((long long)1<<i);
        }
    }
  cout<<r<<endl;
}
/*
6 1 3
8 1 2 1 5 4
*/
#Verdict Execution timeMemoryGrader output
Fetching 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...