Cod sursa(job #1142308)

Utilizator andreeadeacAndreea Ioana Deac andreeadeac Data 13 martie 2014 18:26:28
Problema Orase Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
using namespace std;

ifstream f("orase.in");
ofstream g("orase.out");

int m,n;
struct {int d,l;} o[50001],aux;

int pozdiv(int li, int lf){
    int i,j,piv;
    piv=o[li].d;
    i=li-1;
    j=lf+1;
    do{
        do{i++;} while(o[i].d<piv);
        do{j--;} while(o[j].d>piv);
        if(i<j){
            aux=o[i];
            o[i]=o[j];
            o[j]=aux;
        }
    } while(i<j);
    return j;
}

void quicksort(int li, int lf){
    int p;
    if(li==lf)
        return ;
    p=pozdiv(li,lf);
    quicksort(li,p);
    quicksort(p+1,lf);
}
int main()
{
    int i,max=-1,j,departe,d;
    f>>n>>m;
    for(i=1;i<=m;i++)
        f>>o[i].d>>o[i].l;
    quicksort(1,m);
    departe = 1;
    for(i = 2;i<=m;i++)
    {
        if (o[i].l > o[departe].l + o[i].d - o[departe].d)
            departe = i;
         d=o[i].d - o[departe].d + o[i].l + o[departe].l;
    }
    g<<d<<"\n";
    return 0;
}