Cod sursa(job #1866344)

Utilizator herbertoHerbert Mohanu herberto Data 2 februarie 2017 21:44:01
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
using namespace std;

#define MAXN 50001
int l[MAXN], str[MAXN], v[MAXN];
void myqsort( int begin, int end, int *v) {
  int aux, b = begin, e = end,
    pivot = v[(begin + end) / 2];

  while ( b <= e ) {
    while ( v[b] < pivot ) b++;
    while ( v[e] > pivot ) e--;
    if ( b <= e ) {
      aux = l[b]; l[b] = l[e]; l[e] = aux;
      aux = str[b]; str[b] = str[e]; str[e] = aux;
      b++; e--;
    }
  }
  if ( begin < e ) myqsort( begin, e ,v);
  if ( b < end ) myqsort( b, end, v);
}
int main(){
  FILE*fin=fopen("orase.in", "r");
  FILE*fout=fopen("orase.out", "w");
  int n, m, i, j, max;
  fscanf(fin, "%d%d", &m, &n);
  for(i=1; i<=n; i++)
    fscanf(fin, "%d%d", &str[i], &l[i]);
  myqsort(1, n, str);
  j=1;
  max=-1;
  for(i=2; i<=n; i++){
    if(str[i]+l[i]+l[j]-str[j]>max)
      max=str[i]+l[i]+l[j]-str[j];
    if(l[i]-str[i]>l[j]-str[j])
      j=i;
  }
  fprintf(fout, "%d", max);
  return 0;
}