Cod sursa(job #333458)

Utilizator LuffyBanu Lavinia Luffy Data 22 iulie 2009 21:49:20
Problema Heavy metal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
#define dim 100000
using namespace std;
long a[dim],b[dim];

long quicksort(int inceput, int sfarsit)
{long temp,aux;
int i,j;
i=inceput; j=sfarsit;
temp=a[(i+j)/2];

do
{while(a[i]<temp) i++;
 while(a[j]>temp) j--;
  if(i<j)
     {aux=a[i]; a[i]=a[j]; a[j]=aux; aux=b[i]; b[i]=b[j]; b[j]=aux;}
  if(i<=j)
     {j--; i++;}
} while(i<=j);

if(inceput<j) quicksort(inceput,j);
if(sfarsit>i) quicksort(i,sfarsit);
}



int main()
{int n,sum=0,i,j;
long inc=0;
 FILE *f=fopen("heavymetal.in","r"), *g=fopen("heavymetal.out","w");
 
 fscanf(f,"%d",&n);
  for(i=1;i<=n;i++)
   fscanf(f,"%ld%ld", &a[i], &b[i]);

quicksort(1,n);
 for(i=1;i<=n;i++)
  {if(a[i]>=inc && a[i]!=a[i+1]) {inc=b[i]; sum+=b[i]-a[i];}  
   if(a[i]==a[i+1]&& a[i]>inc)
    {j=i;
	  while(a[j]==a[j+1])
	   {if(b[j+1]>b[j])
         inc=b[j];
         j++;}	   
    
	sum+=b[j]-a[j];}
  }	

fprintf(g,"%d\n",sum);
fclose(f);
fclose(g);
return 0;
}