Cod sursa(job #388287)

Utilizator bog29Antohi Bogdan bog29 Data 29 ianuarie 2010 18:57:44
Problema Heavy metal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
#define dmax 100003
using namespace std;
ifstream in("heavymetal.in");
ofstream out("heavymetal.out");

int n;
long long sol,ult;
struct sp
{	long long p1;
	long long p2;
}	s[dmax]	;
typedef int (*compfn)(const void*,const void*);

int sf(struct sp *a,struct sp *b)
{	return a->p2 - b->p2;	
}

int main()
{	int i,j,bun,mx;
	in>>n;
	for(i=0;i<n;i++)
		in>>s[i].p1>>s[i].p2;
	in.close();
	qsort((void*)&s, n, sizeof(struct sp), (compfn)sf);
	ult=-1;
	for(i=0;i<n;i++)
		if(s[i].p1 >= ult)
		{	j=i;
			mx=s[i].p2;
			bun=i;
			while(s[j].p1==s[i].p1)
			{	if(s[j].p2>mx)
				{	bun=j;
					mx=s[j].p2;
				}	
				j++;
			}	
			sol+=(s[bun].p2 - s[bun].p1 );
			ult=s[bun].p2;
			i=bun;
		}	
	out<<sol;
	out.close();
	return 0;
}