이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,a,b,c,qs[2005],dp[2005],cnt,dp2[105][105];
ll query(ll l,ll r)
{
return qs[r]-qs[l-1];
}
int main()
{
ios_base::sync_with_stdio(0),cin.tie(0);
cin >> n >> a >> b;
for(int i=1;i<=n;i++)
{
cin >> c;
qs[i]=qs[i-1]+c;
}
if(a==1)
{
cnt=0;
for(int i=60;i>=0;i--)
{
cnt|=(1ll<<i);
for(int j=1;j<=n;j++)dp[j]=1e9;
dp[0]=0;
for(int j=1;j<=n;j++)
{
for(int k=0;k<j;k++)
{
if((query(k+1,j)&cnt)==0)
{
dp[j]=min(dp[j],dp[k]+1);
}
}
}
if(dp[n]>b)cnt^=(1ll<<i);
}
printf("%lld\n",(((1ll<<61)-1ll)^cnt));
}else
{
for(int i=60;i>=0;i--)
{
//printf("%d\n",i);
cnt|=(1ll<<i);
for(int j=0;j<=n;j++)
{
for(int k=0;k<=j;k++)
{
//printf("%d %d\n",j,k);
dp2[j][k]=0;
}
}
dp2[0][0]=1;
for(int j=1;j<=n;j++)
{
for(int k=0;k<j;k++)
{
if((query(k+1,j)&cnt)==0)
{
for(int l=1;l<=j;l++)
{
if(dp2[k][l-1]==1)
{
dp2[j][l]=1;
}
}
}
}
}
int sum=0;
for(int j=a;j<=b;j++)sum+=dp2[n][j];
if(sum==0)
{
cnt^=(1ll<<i);
}
}
printf("%lld\n",(((1ll<<61)-1ll)^cnt));
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |