Submission #161907

#TimeUsernameProblemLanguageResultExecution timeMemory
161907MvCBigger segments (IZhO19_segments)C++11
13 / 100
40 ms4396 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include <bits/stdc++.h> #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second using namespace std; typedef long long ll; typedef long double ld; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<62); const int inf=(1<<30); const int nmax=3e3+50; const int mod=1e9+7; int n,i,nr,j,t,l,r,mid; ll a[nmax],f[nmax][nmax],pr[nmax]; int main() { //freopen("sol.in","r",stdin); //freopen("sol.out","w",stdout); //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); cin>>n; for(i=1;i<=n;i++) { cin>>a[i]; pr[i]=pr[i-1]+a[i]; } for(i=0;i<=n;i++)for(j=0;j<=n;j++)f[i][j]=llinf; f[0][0]=0; for(i=1;i<=n;i++) { for(j=i;j<=n;j++) { for(l=0;l<j;l++)if(f[i-1][l]<llinf)break; r=j-1; while(l<=r) { mid=(l+r)/2; if(f[i-1][mid]<=pr[j]-pr[mid]) { f[i][j]=pr[j]-pr[mid]; l=mid+1; } else r=mid-1; } /*for(t=j-1;t>=0;t--) { if(f[i-1][t]<=pr[j]-pr[t]) { f[i][j]=pr[j]-pr[t]; break; } }*/ } if(f[i][n]<llinf)nr=max(nr,i); } cout<<nr<<endl; return 0; }

Compilation message (stderr)

segments.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("O3")
 
segments.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("unroll-loops")
#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...