Pagini recente » Profil M@2Te4i | Statistici UniBuc Arnautu Magureanu Marian (UniBuc_Arnautu_Magureanu_Marian) | Statistici Bontos Tudor Andrei (da12) | Traian Mihai Danciu | Cod sursa (job #121091)
Cod sursa(job #121091)
#include <stdio.h>
int m,n,l[1000001],d[1000001],rez,comp=1;
int partitie(int i,int j) {
int pivot,aux,k;
pivot = d[i];
k = i;
j++;
while(1) {
do i++; while ( d[k] <= pivot && k <= j);
do j--; while ( d[j] > pivot);
if (d[k] >= d[j]) break;
int aux;
aux = d[i];
d[i] = d[j];
d[j] = aux;
aux = l[i];
l[i] = l[j];
l[j] = aux;
aux = d[i];
d[i] = d[j];
d[j] = aux;
}
return j;
}
void sortare(int i,int j) {
int r;
if( i < j)
{
r = partitie(i,j);
sortare( i, r-1);
sortare( r+1, j);
}
}
void citire() {
freopen("orase.in","r",stdin);
freopen("orase.out","w",stdout);
int i;
scanf("%d",&m);
scanf("%d",&n);
for (i=1; i<=n; i++) {
scanf("%d",&d[i]);
scanf("%d",&l[i]);
}
}
void rezolvare() {
int k;
int i,j,aux;
sortare(1,n);
for ( i = 2; i <= n; i++ )
{
if ( l[i] + l[comp] + (d[i] - d[comp]) > rez )
rez = l[i] + l[comp] + (d[i]- d[comp]);
if ( l[comp] + (m - d[comp]) < l[i] + (m - d[i]) )
comp = i;
}
}
int main() {
int i;
freopen("orase.out","w",stdout);
citire();
rezolvare();
printf("%d",rez);
return 0;
}