Submission #633118

#TimeUsernameProblemLanguageResultExecution timeMemory
633118IwanttobreakfreeHacker (BOI15_hac)C++17
100 / 100
488 ms45796 KiB
#include <iostream> #include <vector> using namespace std; #define int long long int int f(int a,int b){ return min(a,b); } int ls(int x){ return x<<1; } int rs(int x){ return (x<<1)+1; } void build(int n,int l,int r,vector<int>& li,vector<int>& t){ if(l==r)t[n]=li[l]; else{ int mid=(r+l)/2; build(ls(n),l,mid,li,t); build(rs(n),mid+1,r,li,t); t[n]=f(t[ls(n)],t[rs(n)]); } } void lazy(int n,int l,int r,int x,vector<int>& la,vector<int>& t){ la[n]=max(la[n],x); t[n]=max(t[n],x); } void rupd(int n,int l,int r,int a,int b,int x,vector<int>& t,vector<int>& la){ if(l>b||r<a)return; if(l>=a&&r<=b){ lazy(n,l,r,x,la,t); } else{ int mid=(r+l)/2; if(l!=r&&la[n]!=0){ int y=la[n]; lazy(ls(n),l,mid,y,la,t); lazy(rs(n),mid+1,r,y,la,t); la[n]=0; } rupd(ls(n),l,mid,a,b,x,t,la); rupd(rs(n),mid+1,r,a,b,x,t,la); t[n]=f(t[ls(n)],t[rs(n)]); } } signed main(){ int n,ans=0,tot=0; cin>>n; vector<int> v(n),v2(2*n+1); for(int& i:v){ cin>>i; tot+=i; } for(int i=1;i<=2*n;i++){ v2[i]=v[(i-1)%n]+v2[i-1]; //cout<<v2[i]-v2[i-1]<<' '; } //cout<<endl; vector<int> t(4*n),la(4*n); int dif=n/2; for(int i=0;i<n;i++){ int val=v2[i+dif]-v2[i]; if((i+dif)%n<i)rupd(1,0,n-1,(i+dif)%n,i-1,val,t,la); else{ rupd(1,0,n-1,0,i-1,val,t,la); rupd(1,0,n-1,i+dif,n-1,val,t,la); } } int x=t[1]; cout<<tot-x; }

Compilation message (stderr)

hac.cpp: In function 'int main()':
hac.cpp:46:11: warning: unused variable 'ans' [-Wunused-variable]
   46 |     int n,ans=0,tot=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...