Cod sursa(job #1773883)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 8 octombrie 2016 12:33:45
Problema Orase Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>

using namespace std;

FILE *in,*out;
const int N = 50001;
//pair <int,int> v[N];

struct oras
{
    int d, l;
};

oras v[N];

bool cmp(oras x, oras y)
{
    return x.d < y.d;
}

int main()
{
    in = fopen("orase.in","r");
    out = fopen("orase.out","w");
    /*for(i = 1;i <= n;i ++)
    {
        if(d[i] + l[i])
            dst = d[i] + l[i];
        if(m-d[i] + l[i] >ddr)
            ddr = m - d[i] + l[i];
    }
    //raspuns dst + ddr - m;
    //solutie alternativa
    */
    int i,n,m,u,dmax,dc;
    fscanf(in,"%d %d",&n,&m);
    for(i = 0;i < n;i ++)
    {
        fscanf(in,"%d %d",&v[i].d,&v[i].l);
    }
    sort(v, v+n, cmp);
    u = 0;
    dmax = -1000000000;
    for(i = 1; i < n; i++)
    {
        dc = v[i].d - v[u].d + v[i].l + v[u].l;
        if(dc > dmax) dmax = dc;
        if(v[i].l > v[i].d - v[u].d + v[u].l)
            u = i;
    }
    fprintf(out,"%d",dmax);
    return 0;
}