제출 #945497

#제출 시각아이디문제언어결과실행 시간메모리
945497MilosMilutinovicAnts and Sugar (JOI22_sugar)C++14
6 / 100
4075 ms24948 KiB
#include<bits/stdc++.h> #define pb push_back #define fi first #define se second #define mp make_pair using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef long double ld; template <typename T> bool chkmin(T &x,T y){return x>y?x=y,1:0;} template <typename T> bool chkmax(T &x,T y){return x<y?x=y,1:0;} ll readint(){ ll x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int q,l,k; int t[500005],x[500005],a[500005]; ll b[1500005][2],sum; vector<int> xs; ll solve(){ ll mx=0,mx0=-1e18,mx1=0; for(int i=0;i<k;i++){ ll pmx0=mx0,pmx1=mx1; mx0=max(pmx0,pmx1-b[i][0]); mx1=max(pmx1,pmx0+b[i][1]); mx=max(mx,mx1); } return sum-mx; } int main(){ q=readint(); l=readint(); for(int i=1;i<=q;i++){ t[i]=readint(); x[i]=readint(); a[i]=readint(); } for(int i=1;i<=q;i++){ xs.pb(x[i]); xs.pb(x[i]-l); xs.pb(x[i]+l); } xs.pb((int)-1.00001e9); sort(xs.begin(),xs.end()); xs.erase(unique(xs.begin(),xs.end()),xs.end()); k=(int)xs.size(); for(int i=1;i<=q;i++){ if(t[i]==1){ int idx=(int)(lower_bound(xs.begin(),xs.end(),x[i])-xs.begin()); for(int j=idx;j<k;j++) b[j][0]+=a[i]; for(int j=idx;j<k;j++) b[j][1]+=a[i]; sum+=a[i]; }else{ int idx=(int)(lower_bound(xs.begin(),xs.end(),x[i]+l)-xs.begin()); for(int j=idx;j<k;j++) b[j][0]-=a[i]; idx=(int)(lower_bound(xs.begin(),xs.end(),x[i]-l)-xs.begin()); for(int j=idx;j<k;j++) b[j][1]-=a[i]; } printf("%lld\n",solve()); } return 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...