Cod sursa(job #1316095)

Utilizator hrazvanHarsan Razvan hrazvan Data 13 ianuarie 2015 15:25:31
Problema Interclasari Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#define MAXN 20000000
int v[MAXN];

void qs(int st, int dr){
  int i = st, j = dr, piv = v[(st + dr) / 2], aux;
  while(i <= j){
    while(v[i] < piv)
      i++;
    while(v[j] > piv)
      j--;
    if(i <= j){
      aux = v[i];
      v[i] = v[j];
      v[j] = aux;
      i++;
      j--;
    }
  }
  if(st < j)
    qs(st, j);
  if(i < dr)
    qs(i, dr);
}

int main(){
  FILE *in = fopen("interclasari.in", "r");
  int t, n = 0, x, i, j = 0;
  fscanf(in, "%d", &t);
  for(i = 0; i < t; i++){
    fscanf(in, "%d", &x);
    n += x;
    for(; j < n; j++){
      fscanf(in, "%d", &v[j]);
    }
  }
  fclose(in);
  qs(0, n - 1);
  FILE *out = fopen("interclasari.out", "w");
  fprintf(out, "%d\n", n);
  for(i = 0; i < n; i++){
    fprintf(out, "%d ", v[i]);
  }
  fclose(out);
  return 0;
}