Cod sursa(job #1562724)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 5 ianuarie 2016 13:50:30
Problema Orase Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>
#define MAXN 50000
int d[MAXN+1],l[MAXN+1],dist[MAXN+1];
inline void swap(int b,int e,int *v){
    int aux=v[b];
    v[b]=v[e];
    v[e]=aux;
}
void myqsort(int begin,int end){
    int b=begin,e=end,pivot=d[(b+e)/2];
    while(b<=e){
        while(d[b]<pivot) b++;
        while(d[e]>pivot) e--;
        if(b<=e){
            swap(b,e,d);
            swap(b,e,l);
            b++;e--;
        }
    }
    if(begin<e) myqsort(begin,e);
    if(b<end) myqsort(b,end);
}
int main(){
    FILE*fi,*fout;
    int i,n,m,max,nr,j;
    fi=fopen("orase.in" ,"r");
    fout=fopen("orase.out" ,"w");
    fscanf(fi,"%d%d" ,&m,&n);
    for(i=1;i<=n;i++)
        fscanf(fi,"%d%d" ,&d[i],&l[i]);
    myqsort(1,n);
    max=0;
    for(i=1;i<=n;i++){
        if(d[i]>d[i-1]||(d[i]==d[i-1]&&l[i]>l[i-1]))
           dist[i]=dist[i-1]+l[i]-l[i-1]+d[i]-d[i-1];
        else
            dist[i]=dist[i-1];
        if(dist[i]>max)
            max=dist[i];
    }
    fprintf(fout,"%d" ,max);
    fclose(fi);
    fclose(fout);
    return 0;
}