Submission #846458

#TimeUsernameProblemLanguageResultExecution timeMemory
846458vjudge1Bali Sculptures (APIO15_sculpture)C++17
37 / 100
1 ms600 KiB
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define task "test1"
#define minpos(x, y) (a[x] <= a[y] ? (x) : (y))
#define pll pair<ll, ll>
#define pii pair<int, int>

using namespace std;

int const nmax = 2e3+3;
int const mod = 1e9+7;
int const LG = 20;
int const base=3;

void open_file()
{
    if(fopen(task".inp","r"))
    {
        freopen(task".inp","r",stdin);
        freopen(task".out","w",stdout);
    }
}

void fast()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}

int n,p,q;
int a[nmax],sb1[101][101],sb2[nmax];
ll pre[nmax];

void sub1(){
    ll ans=0;
    for(int bit=31;bit>=0;bit--){
        memset(sb1,0,sizeof(sb1));
        sb1[0][0]=1;
        ll tmp=ans|(1ll<<bit);
        for(int ngan=1;ngan<=q;ngan++){
            for(int i=ngan;i<=n;i++){
                for(int j=1;j<=i;j++){
                    ll sum=pre[i]-pre[j-1];
                    sb1[i][ngan]|=(sb1[j-1][ngan-1] && ((sum&tmp)==0));
                }
            }
        }
        for(int i=p;i<=q;i++){
            if(sb1[n][i]){
                ans|=(1ll<<bit);
                break;
            }
        }
    }
    ll res=0;
    for(int i=0;i<=31;i++){
        if(!(ans>>i&1)) res|=(1ll<<i);
    }
    cout << res;
}

void sub2(){
    ll ans=0;
    for(int bit=31;bit>=0;bit--){
        memset(sb2,0x3f,sizeof(sb2));
        sb2[0]=0;
        ll tmp=ans|(1ll<<bit);
        for(int i=1;i<=n;i++){
            for(int j=1;j<=i;j++){
                ll sum=pre[i]-pre[j-1];
                if(sb2[j-1]<1e9 && ((sum&tmp)==0)){
                    sb2[i]=min(sb2[i],sb2[j-1]+1);
                }
            }
        }
        if(sb2[n]<=q) ans=tmp;
    }
    ll res=0;
    for(int i=0;i<=31;i++){
        if(!(ans>>i&1)) res|=(1ll<<i);
    }
    cout << res;
}

void input()
{
   cin >> n >> p >> q;
   for(int i=1;i<=n;i++) cin >> a[i],pre[i]=pre[i-1]+a[i];
}

void NGU()
{
    if(p!=1) sub1();
    else sub2();
}

int main()
{
    open_file();
    fast();
    input();
    NGU();
}
/*
*/





Compilation message (stderr)

sculpture.cpp: In function 'void open_file()':
sculpture.cpp:21:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         freopen(task".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
sculpture.cpp:22:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |         freopen(task".out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#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...