Submission #251344

#TimeUsernameProblemLanguageResultExecution timeMemory
251344defineBali Sculptures (APIO15_sculpture)C++17
71 / 100
112 ms4352 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define rep(i,n) for(int i=0;i<n;i++) #define REP(i,n) for(int i=1;i<n;i++) #define rev(i,n) for(int i=n-1;i>=0;i--) #define all(v) v.begin(),v.end() #define P pair<int,int> #define len(s) (int)s.size() template<class T> inline bool chmin(T &a, T b){ if(a>b){a=b;return true;} return false; } template<class T> inline bool chmax(T &a, T b){ if(a<b){a=b;return true;} return false; } constexpr int mod = 998244353; constexpr int inf = 3e18; int N,A,B; int Y[2005]; bool dp[2005][2005]; int dp2[2005]; void solve1(){ int anti=0; rev(i,40){ anti+=1ll<<i; memset(dp,0,sizeof(dp)); dp[0][0]=true; rep(j,N){ rep(k,B){ if(!dp[j][k])continue; int sum=0; for(int l=j;l<N;l++){ sum+=Y[l]; if((sum&anti)==0)dp[l+1][k+1]=true; } } } bool flag=false; for(int j=A;j<=B;j++)flag|=dp[N][j]; if(!flag)anti^=1ll<<i; } cout<<(anti^((1ll<<40)-1))<<endl; } void solve2(){ int anti=0; rev(i,40){ anti+=1ll<<i; fill(dp2,dp2+N+1,inf); dp2[0]=0; rep(j,N){ int sum=0; for(int k=j;k<N;k++){ sum+=Y[k]; if((anti&sum)==0)chmin(dp2[k+1],dp2[j]+1); } } if(dp2[N]>B)anti^=1ll<<i; } cout<<(anti^((1ll<<40)-1))<<endl; } signed main(){ cin>>N>>A>>B; rep(i,N)cin>>Y[i]; int ans=0,anti=0; if(N<=100)solve1(); else solve2(); }

Compilation message (stderr)

sculpture.cpp: In function 'int main()':
sculpture.cpp:68:6: warning: unused variable 'ans' [-Wunused-variable]
  int ans=0,anti=0;
      ^~~
sculpture.cpp:68:12: warning: unused variable 'anti' [-Wunused-variable]
  int ans=0,anti=0;
            ^~~~
#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...