Pagini recente » Cod sursa (job #2901850) | Cod sursa (job #502976) | Cod sursa (job #2067184) | Cod sursa (job #1161246) | Cod sursa (job #184892)
Cod sursa(job #184892)
#include<stdio.h>
#define max(a,b) ((a>=b)?a:b)
#define N 100001
int n,m,i,j,k,p,b[N];
struct in{
int a,b;
} a[N],x;
void heap(int i){
int s,d,max;
while(i<<1<=m){
s=i<<1;d=s+1;max=i;
if(a[max].b<a[s].b)
max=s;
if(d<=m&&a[max].b<a[d].b)
max=d;
if(max-i){
x=a[i];
a[i]=a[max];
a[max]=x;
i=max;
}
else
return;
}
}
int main(){
FILE *in=fopen("heavymetal.in","r"),*out=fopen("heavymetal.out","w");
fscanf(in,"%d",&n);
for(i=1;i-n-1;i++)
fscanf(in,"%d%d",&a[i].a,&a[i].b);
m=n;
for(i=n>>1;i;i--)
heap(i);
for(;m;){
x=a[1];
a[1]=a[m];
a[m]=x;
m--;
heap(1);
}
b[1]=a[1].b-a[1].a;
for(i=2;i-n-1;i++){
b[i]=b[i-1];
for(j=i-1;j;j--)
b[i]=max(b[i],b[j]+(a[i].b-a[i].a)*(a[i].a>=a[j].b));
}
fprintf(out,"%d\n",b[n]);
return 0;
}