제출 #696649

#제출 시각아이디문제언어결과실행 시간메모리
696649vjudge1휴가 (IOI14_holiday)C++14
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; const int N=2e5+10; vector<int>vec(1,0); struct Persistent_Segment_Tree{ struct node{ int l,r,val; long long sum; node(){l=r=val=sum=0;} }; node t[2000000]; int root[N],tot=0; void upd(int &rt,int ort,int l,int r,int X,int d){ if(!rt)rt=++tot; t[rt]=t[ort]; t[rt].val++; t[rt].sum+=d; if(l==r)return; int mid=(l+r)>>1; if(X<=mid)upd(t[rt].l=0,t[ort].l,l,mid,X,d); else upd(t[rt].r=0,t[ort].r,mid+1,r,X,d); } long long ask(int rtl,int rtr,int l,int r,int k){ if(l==r)return 1ll*k*vec[l]; int mid=(l+r)>>1; if(t[t[rtr].r].val-t[t[rtl].r].val>=k)return ask(t[rtl].r,t[rtr].r,mid+1,r,k); return ask(t[rtl].l,t[rtr].l,l,mid,k-t[t[rtr].r].val+t[t[rtl].r].val)+t[t[rtr].r].sum-t[t[rtl].r].sum; } void clear(){ for(int i=0;i<=tot;i++)t[i]=node(); tot=0; } }tr; long long ans; int root[N],a[N]; int n,S,d; void solve(int l,int r,int L,int R){ if(l>r)return; int mid=(l+r)>>1; long long pos=L,res=0; for(int i=L;i<=R;++i){ long long val=tr.ask(root[mid-1],root[i],0,vec.size(),d-(2*(i-S)+S-mid)); if(val>=res)res=val,pos=i; } ans=max(ans,res); solve(l,mid-1,L,pos),solve(mid+1,r,pos,R); } void sl(){ tr.clear(); for(int i=1;i<=n;i++)tr.upd(root[i]=0,root[i-1],0,vec.size(),lower_bound(vec.begin(),vec.end(),a[i])-vec.begin(),a[i]); for(int i=1;i<=S;i++)ans=max(ans,tr.ask(root[i-1],root[S],0,vec.size(),d-S+i)); solve(1,S-1,S+1,n); } int main(){ scanf("%d%d%d",&n,&S,&d); S++; for(int i=1;i<=n;i++)scanf("%d",&a[i]),vec.push_back(a[i]); sort(vec.begin(),vec.end()); vec.erase(unique(vec.begin(),vec.end()),vec.end()); sl(),S=n-S+1,reverse(a+1,a+n+1),sl(); printf("%lld",ans); return 0; }

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

holiday.cpp: In function 'int main()':
holiday.cpp:55:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   55 |     scanf("%d%d%d",&n,&S,&d);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~
holiday.cpp:57:31: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |     for(int i=1;i<=n;i++)scanf("%d",&a[i]),vec.push_back(a[i]);
      |                          ~~~~~^~~~~~~~~~~~
/usr/bin/ld: /tmp/ccRqve7i.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccPzIPak.o:holiday.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccRqve7i.o: in function `main':
grader.cpp:(.text.startup+0xaf): undefined reference to `findMaxAttraction(int, int, int, int*)'
collect2: error: ld returned 1 exit status