Pagini recente » Cod sursa (job #2230871) | Cod sursa (job #1518746) | Cod sursa (job #2410199) | Cod sursa (job #67110) | Cod sursa (job #1854376)
#include <stdio.h>
#include <algorithm>
struct conc
{ int a; int b;int nr;};
conc v[100001];
using namespace std;
bool cmp ( conc x, conc y) {
if ( x.b < y.b )
return 1;
return 0;
}
int main()
{
FILE *fin, *fout;
int n, i, st, dr, o, m;
fin = fopen ( "heavymetal.in", "r" );
fout = fopen ( "heavymetal.out", "w" );
fscanf ( fin, "%d", &n );
for ( i = 1; i <= n; i++)
fscanf ( fin, "%d%d", &v[i].a, &v[i].b);
sort ( v + 1, v + n + 1, cmp);
for ( i = 1; i <= n; i++) {
st = 1;
dr = i - 1;
o = 0;
while ( st <= dr )
{
m = (st + dr) / 2;
if ( v[m].b <= v[i].a )
{
o = m;
st = m + 1;
}
else
dr = m - 1;
}
if(v[i - 1].nr > v[i].b - v[i].a + v[o].nr)
v[i].nr = v[i - 1].nr;
else
v[i].nr = v[i].b - v[i].a + v[o].nr;
}
fprintf ( fout, "%d", v[n].nr);
fclose ( fin );
fclose ( fout );
return 0;
}