Cod sursa(job #2900385)

Utilizator ptlsebiptl sebi ptlsebi Data 10 mai 2022 19:56:08
Problema Tribute Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>


void read_int32_t(FILE *__restrict stream, int32_t *__restrict nr) {
  int8_t ch;
  *nr = 0;
  while ((ch = fgetc(stream)) && ('0' <= ch && ch <= '9')) {
    *nr *= 10;
    *nr += ch - '0';
  }
  if (ch == '\r') {
    fgetc(stream);
  }
}

int cmp(const void *o1, const void *o2) {
  return (*(int32_t *)o1) > (*(int32_t *)o2);
}

int32_t x[50002];
int32_t y[50002];

int32_t n, h, l;

int main(void) {
  {
    FILE *__restrict in = fopen("tribute.in", "r");
  
    read_int32_t(in, &n);
    read_int32_t(in, &l);
    read_int32_t(in, &h);
    {
      int32_t i;
      for(i = 1; i <= n; ++i) {
        read_int32_t(in, x + i);
        read_int32_t(in, y + i);
      }
    }
  
    fclose(in);
  }

  qsort(x + 1, n, sizeof(x[0]), cmp);
  qsort(y + 1, n, sizeof(y[0]), cmp);

  int32_t sum = 0;

  {
    FILE *__restrict out = fopen("tribute.out", "w");

    {
      int32_t i;
      for(i = 1; i <= n; ++i) {
        if (x[i + 1] - x[n - i] - l > 0) {
          sum += x[i + 1] - x[n - i] - l; 
        }
      }
      for(i = 1; i <= n; ++i) {
        if (y[i + 1] - y[n - i] - h > 0) {
          sum += y[i + 1] - y[n - i] - h; 
        }
      }
    }
  
    fprintf(out, "%u", sum);
  
    fclose(out);
  }

  return 0;
}