Cod sursa(job #1918770)

Utilizator hrazvanHarsan Razvan hrazvan Data 9 martie 2017 16:50:06
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 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 || n == 2)
    fprintf(out, "1\n1 1\n");
  else  if(n == 3)
    fprintf(out, "2\n1 1\n2 3\n");
  else{
    fprintf(out, "%d\n", n);
    for(i = 1; i <= n; i++)
      fprintf(out, "%d %d\n", i, v[i]);
  }
  fclose(out);
  return 0;
}