Pagini recente » Cod sursa (job #2400949) | Cod sursa (job #2792646) | Cod sursa (job #1933874) | Cod sursa (job #2834643) | Cod sursa (job #961249)
Cod sursa(job #961249)
#include<fstream>
#include<algorithm>
#define INF 999999999
using namespace std;
ifstream f("stalpi.in");
ofstream g("stalpi.out");
int i,n,p,x[100100],sol[100100];
long long c;
struct mmm{int c,s,d;}v[100100];
inline bool cmp(mmm a,mmm b)
{
return a.d<b.d;
}
inline int query(int p)
{
int rez=INF;
for(;p<=n;p+=((p^(p-1))&p))
rez=min(rez,sol[p]);
return rez;
}
inline void update(int p,long long v)
{
for(;p;p-=((p^(p-1))&p))
sol[p]=min(v,(long long)sol[p]);
}
int main()
{
f>>n;
for(i=1;i<=n;++i)
{
f>>x[i]>>v[i].c>>v[i].s>>v[i].d;
v[i].s=x[i]-v[i].s;
v[i].d+=x[i];
sol[i]=INF;
}
sort(x+1,x+n+1);
sort(v+1,v+n+1,cmp);
for(i=1;i<=n;++i)
{
p=lower_bound(x+1,x+n+1,v[i].s)-x-1;
if(!p)
c=0;
else
c=query(p);
c+=v[i].c;
p=upper_bound(x+1,x+n+1,v[i].d)-x-1;
update(p,c);
}
g<<sol[n]<<'\n';
return 0;
}