Cod sursa(job #479164)

Utilizator freak93Adrian Budau freak93 Data 23 august 2010 10:05:55
Problema Stalpi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<fstream>
#include<algorithm>

using namespace std;

const char iname[]="stalpi.in";
const char oname[]="stalpi.out";
const int maxn=100005;
const int inf=0x3f3f3f3f;

ifstream f(iname);
ofstream g(oname);

class inter
{
    public:
    int a,b,c;
    bool operator>(const inter& x) const
    {
        return a>x.a;
    }
}a[maxn];

int aib[maxn],v[maxn],i,n;

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]=(1<<31)-1;
    sort(a+1,a+n+1,greater<inter>());
    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)<<"\n";
}