Cod sursa(job #1456597)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 1 iulie 2015 12:50:20
Problema Orase Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 50000
int l[MAXN],d[MAXN];
void myqsort(int begin,int end){
    int b=begin,e=end,aux1,aux2,pivot=d[(b+e)/2];
    while(b<=e){
        while(d[b]<pivot) b++;
        while(d[e]>pivot) e--;
        if(b<=e){
            aux1=d[b];aux2=l[b];
            d[b]=d[e];l[b]=l[e];
            d[e]=aux1;l[e]=aux2;
            b++;e--;
        }
    }
    if(begin<e) myqsort(begin,e);
    if(b<end) myqsort(b,end);
}
int main(){
    FILE*fi,*fout;
    int i,max,poz1,poz2,n,m;
    fi=fopen("orase.in" ,"r");
    fout=fopen("orase.out" ,"w");
    fscanf(fi,"%d%d" ,&m,&n);
    for(i=0;i<n;i++)
       fscanf(fi,"%d%d" ,&d[i],&l[i]);
    myqsort(0,n-1);
    i=1;
    max=poz1=0;
    while(i<n){
        if(max<d[i]-d[0]+l[i]+l[0]){
            max=d[i]-d[0]+l[i]+l[0];
            poz2=i;
        }
        i++;
    }
    i=1;
    while(i<poz2){
        if(max<max-(d[i]-d[poz1])+l[i]-l[poz1]){
            max=max-(d[i]-d[poz1])+l[i]-l[poz1];
            poz1=i;
        }
        i++;
    }
    fprintf(fout,"%d" ,max);
    fclose(fi);
    fclose(fout);
    return 0;
}