Pagini recente » Cod sursa (job #1209191) | Cod sursa (job #747893) | Solutii preONI 2007, Runda 4 | Cod sursa (job #859212) | Cod sursa (job #97493)
Cod sursa(job #97493)
#include <stdio.h>
#define infile "orase.in"
#define outfile "orase.out"
#define nmax 50001
long n, m, i, j, last, rez, aux;
long d[nmax], l[nmax];
void readData();
void writeData();
void solve();
int main()
{
readData();
solve();
writeData();
return 0;
}
void readData()
{
freopen(infile, "r", stdin);
scanf("%ld %ld\n", &m, &n);
for ( i=1; i<=n; i++ )
scanf("%ld %ld\n", &d[i], &l[i]);
}
void solve()
{
int gata=0, temp;
for (i=1; i<n && !gata; i++)
{
gata=1;
for ( j=i+1; j<=n; j++ )
if (d[i]>d[j])
{
gata=0;
temp=d[i];
d[i]=d[j];
d[j]=temp;
temp=l[i];
l[i]=l[j];
l[j]=temp;
}
}
last=1;
for ( i=2; i<=n; i++ )
{
if ( d[i]-d[last]+l[i]+l[j] > d[i]-d[i-1]+l[i]+l[i-1] )
{
aux=d[i]-d[last]+l[i]+l[j];
if (aux>rez) rez=aux;
}
else
{
aux=d[i]-d[i-1]+l[i]+l[i-1];
last=i-1;
if (aux>rez) rez=aux;
}
}
}
void writeData()
{
freopen(outfile, "w", stdout);
printf("%ld\n", rez);
fclose(stdout);
}