Pagini recente » Cod sursa (job #1779495) | Cod sursa (job #1198176) | Cod sursa (job #925190) | Cod sursa (job #2256727) | Cod sursa (job #137665)
Cod sursa(job #137665)
#include <stdio.h>
#include <set>
#include <algorithm>
using namespace std;
set <int > o;
set <int >::iterator it;
const int n_max = 100001;
int x[n_max],
c[n_max],
s[n_max],
d[n_max],
din[n_max],
ind[n_max];
int i, n, j, Min, t;
inline int MIN(int x, int y)
{
if ( x < y)
return x;
else
return y;
}
bool cmpf(const int a, const int b)
{
return (x[a]< x[b]);
}
int main()
{
freopen("stalpi.in","r",stdin);
freopen("stalpi.out","w",stdout);
scanf("%d", &n);
for (i = 1; i <= n; ++ i)
{
scanf(" %d %d %d %d ", &x[i], &c[i], &s[i], &d[i]);
// o.insert(x[i]);
ind[i] = i;
}
sort(ind + 1, ind + n + 1, cmpf);
din[ind[1]] = c[ind[1]];
for (i = 2; i <= n; ++ i)
{
t = 0;
Min = 1<<30;
for (j = 1; j <= n; ++ j)
if (x[ind[i]]-s[ind[i]]>x[ind[j]])
t = x[ind[j]];
for (j = 1; j <= i; ++ j)
{
if (t <=x[ind[j]]+d[ind[j]])
{
Min = MIN(din[ind[j]], Min);
}
}
din[ind[i]] = Min + c[ind[i]];
}
Min = 1<<30;
for (i = 1; i <= n; ++ i)
{
if (x[ind[i]] + d[ind[i]] >=x[ind[n]])
{
Min = MIN(din[ind[i]], Min);
}
}
printf("%d\n", Min +1);
return 0;
}