Cod sursa(job #1075671)

Utilizator DanyPrvPirvoaica Daniel DanyPrv Data 9 ianuarie 2014 14:03:07
Problema Heavy metal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include<algorithm>
using namespace std;
ifstream f("heavymetal.in");
ofstream g("heavymetal.out");
struct metal{
    int a,b;
}v[100001];
int cmp(metal x,metal y){
    if (x.a<y.a) return 1;
    if (x.a==y.a&&x.b<y.b) return 1;
    return 0;
}
int b[100001],i,j,n,nr,p,u,mij,sol,act;
int main()
{
    f>>n;
    for(i=1;i<=n;i++){
        f>>v[i].a>>v[i].b;
    }
    sort(v+1,v+n+1,cmp);
    b[1]=v[1].b-v[1].a;
	for(i=2;i<=n;i++){
		p=1;
		u=i-1;
		sol=0;
		while(p<=u){
			mij=(p+u)/2;
			if(v[i].a>=v[mij].b){
				sol=mij;
				p=mij+1;
			}
			else
				u=mij-1;
		}
		act=v[i].b-v[i].a;
		if(b[i-1]<b[sol]+act)
			b[i]=b[sol]+act;
		else
			b[i]=b[i-1];
	}
	g<<b[n];
    return 0;
}