Pagini recente » Cod sursa (job #815774) | Cod sursa (job #1959756) | Cod sursa (job #2939608) | Cod sursa (job #2308904) | Cod sursa (job #333458)
Cod sursa(job #333458)
#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;
}