Pagini recente » Cod sursa (job #1586170) | Cod sursa (job #2289809) | Cod sursa (job #1008746) | Solutii preONI 2007, Runda 3 | Cod sursa (job #1288418)
#include <stdio.h>
#define MAXN 50000
int x[MAXN], y[MAXN];
void qs(int st, int dr){
int i = st, j = dr, piv = x[(st + dr) / 2], aux;
while(i <= j){
while(x[i] < piv)
i++;
while(x[j] > piv)
j--;
if(i <= j){
aux = x[i];
x[i] = x[j];
x[j] = aux;
aux = y[i];
y[i] = y[j];
y[j] = aux;
i++;
j--;
}
}
if(st < j)
qs(st, j);
if(i < dr)
qs(i, dr);
}
int main(){
FILE *in = fopen("orase.in", "r");
int m, n, i;
fscanf(in, "%d%d", &m, &n);
for(i = 0; i < n; i++){
fscanf(in, "%d%d", &x[i], &y[i]);
}
fclose(in);
qs(0, n - 1);
int max = 0, cmax = 0;
for(i = 1; i < n; i++){
cmax = (x[i] - x[i - 1] + y[i] + y[i - 1]) > (x[i] - x[cmax] + y[i] + y[cmax]) ? (i - 1) : cmax;
if(x[i] - x[cmax] + y[i] + y[cmax] > max)
max = x[i] - x[cmax] + y[i] + y[cmax];
}
FILE *out = fopen("orase.out", "w");
fprintf(out, "%d", max);
return 0;
}