Cod sursa(job #1798087)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 4 noiembrie 2016 21:10:14
Problema Stalpi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
ifstream f("stalpi.in");
ofstream g("stalpi.out");
struct pt
{
    int a,b,c;
}a[1<<17];
bool cmp(pt x,pt y)
{
    return x.a>y.a;
}
int i,n,aib[1<<17],v[1<<17];
void update(int x,int y)
{
    for(;x<=n+1;x+=x&-x)
        aib[x]=min(aib[x],y);
}
int query(int x)
{
    int rez=inf;
    for(;x;x-=x&-x)
        rez=min(rez,aib[x]);
    return rez;
}
int main()
{
    f>>n;
    for(i=1;i<=n;++i)
        f>>v[i]>>a[i].c>>a[i].a>>a[i].b,a[i].a=v[i]-a[i].a,a[i].b+=v[i];
    sort(v+1,v+n+1);
    v[n+1]=(1LL<<31)-1;
    sort(a+1,a+n+1,cmp);
    memset(aib,inf,sizeof aib);
    update(n+1,0);
    for(i=1;i<=n;++i)
        update(lower_bound(v+1,v+n+1,a[i].a)-v,query((upper_bound(v+1,v+n+2,a[i].b)-v))+a[i].c);
    g<<query(1);
}