Submission #1281572

#TimeUsernameProblemLanguageResultExecution timeMemory
1281572StefanSebezBali Sculptures (APIO15_sculpture)C++20
100 / 100
166 ms636 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define ll long long #define ld long double #define mp make_pair void chmn(ll &x,ll y){x=min(x,y);} void chmx(ll &x,ll y){x=max(x,y);} void chmn(int &x,int y){x=min(x,y);} void chmx(int &x,int y){x=max(x,y);} const int N=2050,lg=60; const ll inf=(1LL<<60)-1; int n,A,B,a[N]; bool dp[N][N]; bool Check(ll s){ for(int i=0;i<=n;i++) for(int k=0;k<=B;k++) dp[i][k]=0; dp[0][0]=1; for(int i=1;i<=n;i++){ for(int k=1;k<=B;k++){ ll sum=0; for(int j=i-1;j>=0;j--){ sum+=a[j+1]; if(((sum|s)==s)&&dp[j][k-1]){dp[i][k]=1;break;} } } } for(int k=A;k<=B;k++) if(dp[n][k]) return true; return false; } int dp1[N]; bool Check1(ll s){ for(int i=0;i<=n;i++) dp1[i]=1e9; dp1[0]=0; for(int i=1;i<=n;i++){ ll sum=0; for(int j=i-1;j>=0;j--){ sum+=a[j+1]; if((sum|s)==s) chmn(dp1[i],dp1[j]+1); } } return dp1[n]<=B; } int main(){ scanf("%i%i%i",&n,&A,&B); for(int i=1;i<=n;i++) scanf("%i",&a[i]); if(A==1){ ll s=(1LL<<lg)-1; for(ll i=lg-1;i>=0;i--){ s^=1LL<<i; if(!Check1(s)) s^=1LL<<i; } printf("%lld\n",s); } else{ ll s=(1LL<<lg)-1; for(ll i=lg-1;i>=0;i--){ s^=1LL<<i; if(!Check(s)) s^=1LL<<i; } printf("%lld\n",s); } return 0; }

Compilation message (stderr)

sculpture.cpp: In function 'int main()':
sculpture.cpp:47:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |     scanf("%i%i%i",&n,&A,&B);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~
sculpture.cpp:48:32: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   48 |     for(int i=1;i<=n;i++) scanf("%i",&a[i]);
      |                           ~~~~~^~~~~~~~~~~~
#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...