Cod sursa(job #1288418)

Utilizator hrazvanHarsan Razvan hrazvan Data 8 decembrie 2014 20:08:49
Problema Orase Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1 kb
#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;
}