제출 #692952

#제출 시각아이디문제언어결과실행 시간메모리
692952Pyqe메기 농장 (IOI22_fish)C++17
100 / 100
715 ms43956 KiB
#include <bits/stdc++.h> #include "fish.h" using namespace std; #define mp make_pair #define fr first #define sc second const long long inf=1e18; long long mxa[100069][2]; vector<pair<long long,long long>> vl[100069]; struct segtree { long long l,r,mx; segtree *p[2]; void bd(long long lh,long long rh) { l=lh; r=rh; mx=-inf; if(l<r) { long long ii,md=(l+r)/2; for(ii=0;ii<2;ii++) { p[ii]=new segtree; p[ii]->bd(!ii?l:md+1,!ii?md:r); } } } void ud(long long x,long long w) { if(l>x||r<x); else if(l>=x&&r<=x) { mx=max(mx,w); } else { long long ii; for(ii=0;ii<2;ii++) { p[ii]->ud(x,w); } mx=max(p[0]->mx,p[1]->mx); } } long long qr(long long lh,long long rh) { if(l>rh||r<lh) { return -inf; } else if(l>=lh&&r<=rh) { return mx; } else { return max(p[0]->qr(lh,rh),p[1]->qr(lh,rh)); } } } sg[2]; long long max_weights(int n,int m,vector<int> xa,vector<int> ya,vector<int> wg) { long long i,j,ii,x,y,w,l,l2,sz,z=-inf; for(i=1;i<=m;i++) { x=xa[i-1]+1; y=ya[i-1]+1; w=wg[i-1]; vl[x].push_back({y,w}); } for(ii=0;ii<2;ii++) { sg[ii].bd(1,n); } for(i=1;i<=n;i++) { sort(vl[i].begin(),vl[i].end()); l=mxa[i-1][1]; l2=-inf; if(i-2>=0) { l2=max(mxa[i-2][0],mxa[i-2][1]); } sz=vl[i].size(); for(j=0;j<sz;j++) { y=vl[i][j].fr; w=vl[i][j].sc; sg[0].ud(y,max(sg[0].qr(1,y-1),max(l,l2))+w); } for(j=sz-1;j>=0;j--) { y=vl[i][j].fr; w=vl[i][j].sc; sg[1].ud(y,max(sg[1].qr(y+1,n),l2)+w); } for(ii=0;ii<2;ii++) { mxa[i][ii]=max(mxa[i-1][ii],sg[ii].mx); } } z=max(mxa[n][1],mxa[n-1][0]); return z; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...