Cod sursa(job #2970980)

Utilizator AndreidreiGresoiu Liviu-Andrei Andreidrei Data 26 ianuarie 2023 11:20:52
Problema Stalpi Scor 0
Compilator cpp-64 Status done
Runda sa_fac_schema Marime 1.23 kb
#include <bits/stdc++.h>
#pragma GCC optimize ("O3")
#define din cin
#define dout out
#define pi 3.14159265359
#define sw(x,y) x^=y,y^=x,x^=y
#define bmin(a,b)((a<b)?(a):(b))
#define bmax(a,b)((a>b)?(a):(b))
#define bminify(a,b)a=bmin(a,b)
#define bmaxify(a,b)a=bmax(a,b)
#define forq(i,ii,n)for(i=ii;i<n;i++)
using namespace std;
typedef long long ll;
ifstream in("stalpi.in");
ofstream out("stalpi.out");
ll n,i,j,x[100002],c[100002],h[100002],l;
struct t{int x,s,d,c;}a[100002];
int main()
{
ios_base::sync_with_stdio(false);
in.tie(nullptr),out.tie(nullptr);
in>>n;
for(i=1;i<=n;i++)
    in>>a[i].x>>a[i].c>>a[i].s>>a[i].d,x[i-1]=a[i].x,c[i]=INT_MAX;
sort(x,x+n);
x[n]=INT_MAX;
//for(i=0;i<n;i++)cout<<x[i]<<' ';cout<<'\n';
for(i=1;i<=n;i++)
    a[i].s=lower_bound(x,x+n,a[i].x-a[i].s)-x+1,a[i].d=upper_bound(x,x+n,a[i].x+a[i].d)-x;
sort(a+1,a+n+1,[](t a,t b){return a.s<b.s;});
for(i=1;i<=n;i++)
{
    h[l++]=((c[a[i].s-1]+a[i].c)<<20ll)+a[i].d;
    push_heap(h,h+l,greater<ll>());
    while(h[0]%(1<<20ll)<i)
        pop_heap(h,h+l,greater<ll>()),l--/*,cout<<h[l]%(1<<20ll)<<' '*/;
    //for(j=0;j<l;j++)cout<<(h[j]>>20)<<' '<<h[j]%(1<<20)<<"   ";
    c[i]=h[0]>>20ll;
    //cout<<c[i]<<'\n';
}
out<<c[n];
}