Cod sursa(job #1774234)

Utilizator tiberiu.bucur17Tiberiu Constantin Emanoil Bucur tiberiu.bucur17 Data 8 octombrie 2016 18:30:58
Problema Orase Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
#define maxim(a,b) a>b? a:b
struct strada
{
    int l,d;
}v[50000];
inline void interschimb(int *a,int *b)
{
    int aux=*a;
    *a=*b;*b=aux;
}
void myqsort(int start,int stop)
{
    int i,j,pivot;
    i=start;j=stop;
    pivot=v[(i+j)/2].l;
    while(i<=j)
    {
        while(v[i].l<pivot)
            i++;
        while(v[j].l>pivot)
            j--;
        if(i<=j)
        {
            interschimb(&v[i].l,&v[j].l);
            interschimb(&v[i].d,&v[j].d);
            i++;j--;
        }
    }
    if(j>start)
        myqsort(start,j);
    if(i<stop)
        myqsort(i,stop);
}
int main()
{
    FILE *fin,*fout;
    fin=fopen("orase.in","r");
    fout=fopen("orase.out","w");
    int n,m,i,max,s;
    fscanf(fin,"%d%d",&m,&n);
    for(i=0;i<n;i++)
        fscanf(fin,"%d%d",&v[i].l,&v[i].d);
    myqsort(0,n-1);
    max=v[0].d-v[0].l;s=0;
    for(i=1;i<n;i++)
    {
        s=maxim(s,v[i].l+v[i].d+max);
        max=maxim(max,v[i].d-v[i].l);
    }
    fprintf(fout,"%d",s);
    fclose(fin);
    fclose(fout);
    return 0;
}