Cod sursa(job #332521)

Utilizator bugyBogdan Vlad bugy Data 18 iulie 2009 13:42:59
Problema Heavy metal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<stdio.h>
using namespace std;
#define dim 100001
long v[dim],w[dim], a[dim], b[dim], c[dim], d[dim],q[dim];   
void merge_sort(int li, int ls)      
{      
    int j,i,k,jum,m=0;      
    if(li==ls) return;      
    jum=(li+ls)/2;      
    merge_sort(li,jum);      
    merge_sort(jum+1,ls);      
    i=li;j=jum+1;k=li;      
          
    while((i<=jum)||(j<=ls))      
    {      
        if(j>ls || ( (i<=jum) && (v[i] < v[j])) )      
        {      
            w[k] = v[i];  m++; b[k]=a[i];  d[k]=c[i];  
            k++;      
            i++;      
        }      
        else     
        {      
            w[k] = v[j]; m++; b[k]=a[j];   d[k]=c[j];   
            k++;      
            j++;      
        }      
    }      
          
    for(i = ls; i >= li; i--)      
	{
		v[i] = w[i]; a[i]=b[i];  c[i]=d[i];
	}
}   

int main()
{
	int i,n,max=1,ore=0,j,ok=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",&v[i],&a[i]);c[i]=a[i]-v[i];}
merge_sort(1,n);
for(i=n;i>1;i--)
	for(j=i+1;j<n;j++)
		if(q[j]!=1)
			if(a[j]>v[i])
				{q[i]=1;break;}
for(i=1;i<=n;i++)
	if(q[i]!=1) ore+=c[i];



fprintf(g,"%d\n",ore);


fclose(f);
fclose(g);

return 0;}