Saturday, October 10, 2015

UVa 10164 - Number Game

Accepted date: 2015-10-10
Ranking (as of 2015-10-10): 10 out of 481
Language: C++

/*
  UVa 10164 - Number Game

  To build using Visual Studio 2012:
    cl -EHsc -O2 UVa_10164_Number_Game.cpp
*/

#include <cstdio>

const int N_max = 1024;
int N, n, numbers[2 * N_max], solutions[N_max];

bool number_game(int ni, int nr, int s)
{
  if (nr == N)
    return !(s % N);
  else if (ni < n) {
    solutions[nr] = numbers[ni];
    if (number_game(ni + 1, nr + 1, s + numbers[ni]))
      return true;
    if (number_game(ni + 1, nr, s))
      return true;
  }
  return false;
}

int main()
{
  while (true) {
    scanf("%d", &N);
    if (!N)
      break;
    n = 2 * N - 1;
    for (int i = 0; i < n; i++)
      scanf("%d", &numbers[i]);
    if (number_game(0, 0, 0)) {
      puts("Yes");
      for (int i = 0; i < N; i++)
        printf("%d%c", solutions[i], ((i < N - 1) ? ' ' : '\n'));
    }
    else
      puts("No");
  }
  return 0;
}

1 comment:

  1. Can i get some read me file or some other thing to understand your code. I can't understand the variables you initialized.

    ReplyDelete