Cod sursa(job #1918756)

Utilizator hrazvanHarsan Razvan hrazvan Data 9 martie 2017 16:47:03
Problema Dame Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <cstdio>
#define MAXN 1000
int v[MAXN + 1];

int main(){
  FILE *in = fopen("dame.in", "r");
  int n, i, j, p, aux;
  fscanf(in, "%d", &n);
  fclose(in);
  j = 1;
  if(n % 12 == 3 || n % 12 == 9)
    j = n / 2;
  for(i = 1; i * 2 <= n; i++){
    v[j] = i * 2;
    j++;
    if(j > n / 2)
      j = 1;
  }
  p = n / 2 + 1;
  switch(n % 12){
    case 8:
      for(i = 0; 2 * i + 1 <= n; i++)
        v[p + i] = 2 * i + 1;
      j = p;
      for(i = 1; i + 2 <= n; i += 4){
        aux = v[j];  v[j] = v[j + 1];  v[j + 1] = aux;
        j += 2;
      }
      break;
    case 2:
      j = p;
      v[j] = 3;
      j++;
      v[j] = 1;
      j++;
      for(i = 7; i <= n; i += 2)
        v[j++] = i;
      v[j] = 5;
      break;
    case 3:
    case 9:
      j = p;
      for(i = 5; i <= n; i += 2)
        v[j++] = i;
      v[j++] = 1;
      v[j++] = 3;
      break;
    default:
      for(i = 0; 2 * i + 1 <= n; i++)
        v[p + i] = 2 * i + 1;
      break;
  }
  FILE *out = fopen("dame.out", "w");
  if(n == 1)
    fprintf(out, "1\n1 1\n");
  else  if(n < 4)
    fprintf(out, "0\n");
  else{
    for(i = 1; i <= n; i++)
      fprintf(out, "%d ", v[i]);
  }
  fclose(out);
  return 0;
}