Cod sursa(job #145160)

Utilizator titusuTitus C titusu Data 28 februarie 2008 15:21:01
Problema Heavy metal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>

int a[100005],b[100005],n;

void citire()
{
	FILE *f=fopen("heavymetal.in","r");
	fscanf(f,"%d",&n);
	for(int i=1;i<=n;i++)
		fscanf(f,"%d%d",&a[i],&b[i]);
	fclose(f);
}

void sort()
{
	int capat=n,cpt,i,aux,sortat=0;
	while(!sortat)
	{
		sortat=1,cpt=capat;
		for(i=1;i<cpt;i++)
		if(b[i]<b[i+1])
		{
			aux=a[i];a[i]=a[i+1];a[i+1]=aux;
			aux=b[i];b[i]=b[i+1];b[i+1]=aux;
			capat=i;
			sortat=0;
		}
		else
			if(b[i]==b[i+1])
				if(a[i]>a[i+1])
				{
					//aux=a[i];a[i]=a[i+1];a[i+1]=aux;
					aux=b[i];b[i]=b[i+1];b[i+1]=aux;
					capat=i;
					sortat=0;
				}
	}
}


int lungime()
{
	int i=n,timp=a[n],total=0;
	for(i=1;i<=n;)
	{
		total+=b[i]-a[i];
		//printf("%d\n",total);
		timp=a[i];
		while(b[i]>timp && i<=n)
			i++;
	}
	return total;
}

void afis()
{
	FILE *f=fopen("heavymetal.out","w");
	fprintf(f,"%d",lungime());
	fclose(f);
}

int main()
{
	citire();
	sort();
	//for(int i=1;i<=n;i++)
	//	printf("%d %d\n",a[i],b[i]);
	afis();
	return 0;
}