Cod sursa(job #68779)

Utilizator mariusdrgdragus marius mariusdrg Data 29 iunie 2007 13:54:43
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>


const int maxn = 1000000 + 1;

int i;
int sol;
int b[maxn];
int a[maxn];
int x;
int y;
int n;
int m;

inline int max(int a,int b)
{
        return a > b ? a : b;
}


int main()
{

        freopen("orase.in","r",stdin);
        freopen("orase.out","w",stdout);
        scanf("%d %d",&n,&m);
        for(i = 1;i <= m; ++i)
        {
                scanf("%d %d",&x,&y);
                sol = max(sol, y + a[x]);
                a[x] = max(a[x],y);
        }
        for(i = 1;i <= n; ++i)
        {
                b[i] = max(b[i - 1] + 1, a[i]);
                
        }
        for(i = n; i > 0; --i)
        {
                a[i] = max(a[i + 1] + 1, a[i]);
        }
        for(i = 1;i <= n; ++i)
        {
                sol = max(sol, a[i] + b[i]);
        }
        printf("%d\n",sol);
        return 0;
}