제출 #741921

#제출 시각아이디문제언어결과실행 시간메모리
741921irmuunBali Sculptures (APIO15_sculpture)C++17
100 / 100
129 ms464 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define ll long long #define ff first #define ss second #define all(s) s.begin(),s.end() int n,a,b; ll y[2005]; bool check1(ll mask){ bool dp[105][105]; memset(dp,false,sizeof(dp)); dp[0][0]=true; for(int j=0;j<=n;j++){ for(int i=0;i<n;i++){ if(dp[i][j]==true){ ll cur=0; for(int k=i+1;k<=n;k++){ cur+=y[k]; if((cur&mask)==0){ dp[k][j+1]=true; } } } } } for(int i=a;i<=b;i++){ if(dp[n][i]==true){ return true; } } return false; } bool check2(ll mask){ int dp[2005]; for(int i=0;i<=n;i++){ dp[i]=100000; } dp[0]=0; for(int i=0;i<n;i++){ if(dp[i]<100000){ ll cur=0; for(int j=i+1;j<=n;j++){ cur+=y[j]; if((cur&mask)==0){ dp[j]=min(dp[j],dp[i]+1); } } } } return (dp[n]<=b); } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>a>>b; for(int i=1;i<=n;i++){ cin>>y[i]; } if(n<=100){ ll cur=0; for(ll i=60;i>=0;i--){ if(check1(cur+(1ll<<i))==true){ cur+=(1ll<<i); } } cout<<(1ll<<61)-1-cur; } else{ ll cur=0; for(ll i=60;i>=0;i--){ if(check2(cur+(1ll<<i))==true){ cur+=(1ll<<i); } } cout<<(1ll<<61)-1-cur; } }
#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...