제출 #493946

#제출 시각아이디문제언어결과실행 시간메모리
493946jamezzzBali Sculptures (APIO15_sculpture)C++17
100 / 100
447 ms332 KiB
#include <bits/stdc++.h> using namespace std; #ifdef DEBUG #define dbg(...) printf(__VA_ARGS__); #define getchar_unlocked getchar #else #define dbg(...) #endif #define sf scanf #define pf printf #define fi first #define se second #define pb push_back #define sz(x) (int)x.size() #define mnto(x,y) x=min(x,(__typeof__(x))y) #define mxto(x,y) x=max(x,(__typeof__(x))y) #define INF 1023456789 #define LINF 1023456789123456789 #define all(x) x.begin(), x.end() #define disc(x) sort(all(x));x.resize(unique(all(x))-x.begin()); typedef long long ll; typedef long double ld; typedef pair<int, int> ii; typedef pair<ll, ll> pll; typedef tuple<int, int, int> iii; typedef tuple<int, int, int, int> iiii; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<pll> vll; mt19937 rng(time(0)); inline int rd(){ int x=0; char ch=getchar_unlocked(); while(ch<'0'||ch>'9')ch=getchar_unlocked(); while(ch>='0'&&ch<='9'){ x=(x<<3)+(x<<1)+ch-'0'; ch=getchar_unlocked(); } return x; } int n,a,b,y[2005]; int maxbit=40; bool dp1[105][105];//pos,#segment int msb(ll v){ for(int i=maxbit;i>=0;--i){ if(v&(1ll<<i))return i; } return -1; } void solve1(){ ll ans=0; for(int bit=maxbit;bit>=0;--bit){ memset(dp1,0,sizeof dp1); for(int i=a;i<=b;++i)dp1[n+1][i]=1; for(int i=n;i>=1;--i){ for(int j=0;j<=b;++j){ ll sm=0; for(int k=i;k<=n;++k){ sm+=y[k]; if(msb(sm&(~ans))<bit)dp1[i][j]|=dp1[k+1][j+1]; } } } if(!dp1[1][0])ans|=(1ll<<bit); } pf("%lld\n",ans); } int dp2[105]; void solve2(){ ll ans=0; for(int bit=maxbit;bit>=0;--bit){ for(int i=1;i<=n;++i)dp2[i]=INF; for(int i=n;i>=1;--i){ ll sm=0; for(int j=i;j<=n;++j){ sm+=y[j]; if(msb(sm&(~ans))<bit)mnto(dp2[i],dp2[j+1]+1); } } if(dp2[1]>b)ans|=(1ll<<bit); } pf("%lld\n",ans); } int main(){ n=rd();a=rd();b=rd(); for(int i=1;i<=n;++i)y[i]=rd(); if(a==1)solve2(); else solve1(); } /* 6 1 3 8 1 2 1 5 4 */
#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...