Pagini recente » Cod sursa (job #2790193) | Cod sursa (job #3002763) | Cod sursa (job #364999) | Cod sursa (job #2411374) | Cod sursa (job #479164)
Cod sursa(job #479164)
#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";
}