제출 #173491

#제출 시각아이디문제언어결과실행 시간메모리
173491juggernautBigger segments (IZhO19_segments)C++14
13 / 100
3 ms380 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = (int)5e5 + 7; int n; int a[N], dp[N], ind[N]; ll pref[N]; int t[4*N]; void build(int v,int l,int r){ if(l==r){ t[v]=1e9; return; } int mid=(l+r)>>1; build(2*v,l,mid); build(2*v+1,mid+1,r); t[v]=1e9; } void update(int v,int l,int r,int pos,int val){ if(l==pos&&r==pos){ t[v]=val; return; } int mid=(l+r)>>1; if(pos<=mid)update(2*v,l,mid,pos,val); else update(2*v+1,mid+1,r,pos,val); t[v]=min(t[v*2],t[v*2+1]); } int get(int v,int l,int r,int ql,int qr){ if(ql<=l&&r<=qr)return t[v]; if(r<ql||qr<l)return 1e9; int mid=(l+r)>>1; return min(get(v*2,l,mid,ql,qr),get(v*2+1,mid+1,r,ql,qr)); } main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); pref[i] = pref[i - 1] + a[i]; } build(1,0,n); update(1,0,n,0,0); for (int i = 1; i <= n; i++) { dp[i] = dp[i - 1]; ind[i] = ind[i - 1]; int l = 0,r=i-1,mid; while(l<r){ mid=(l+r+1)>>1; if(pref[i]>=get(1,0,n,mid,i-1))l=mid; else r=mid-1; } /*for (int j = 0; j < i; j++) { if (pref[i] >= 2 * pref[j] - pref[ind[j]]) { l = j; } }*/ update(1,0,n,i,2*pref[i]-pref[l]); dp[i] = dp[l] + 1; ind[i] = l; } // cerr << ind[4] << endl; cout << dp[n]; }

컴파일 시 표준 에러 (stderr) 메시지

segments.cpp:39:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main() {
      ^
segments.cpp: In function 'int main()':
segments.cpp:40:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
  ~~~~~^~~~~~~~~~
segments.cpp:42:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &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...