Cod sursa(job #829398)

Utilizator avaspataruAva Spataru avaspataru Data 5 decembrie 2012 12:13:37
Problema Orase Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

struct orasele{int x,y;};
orasele v[50001];

bool compar(const orasele A, const orasele B){
    if(A.x==B.x)
        return A.y<B.y;
    return A.x<B.x;
}

int i,n,m,vscx,sc,scmax,vscy,pp;
int main(){
    freopen("orase.in","r",stdin);
    freopen("orase.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++){
        scanf("%d%d",&v[i].x,&v[i].y);
    }
    sort(v+1,v+m+1,compar);
    vscx=v[1].x;
    sc=v[1].x;
    vscy=v[1].y;
    for(i=2;i<=n;i++){
        pp=1;
        if(v[i].y>sc){
            sc=v[i].x;
            vscx=v[i].x;
            vscy=v[i].y;
            pp=0;
        }
        sc+=(v[i].x-vscx);
        if(sc+v[i].y+vscy>scmax&&pp==0){
            scmax=sc+v[i].y+vscy;
        }
        if(sc+v[i].y>scmax&&pp==1){
            scmax=sc+v[i].y;
        }
    }
    printf("%d",scmax-1);
    return 0;
}