All pastes #277770 Raw Edit

Untitled

public text v1 · immutable
·published 2006-12-13 15:45 UTC
rendered paste body
#include <stdio.h>

int search[500];
int nimvalue[500];

int main()
{
	int m;
	scanf("%d",&m);

	int* n;
	n = new int[m];

	int max = 0;
	int i = 0;
	for(i = 0;i < m;i++)
	{
		scanf("%d",&n[i]);
		if(max < n[i])
			max = n[i];
	}

	for(i = 0;i < 500;i++)
		search[i] = 0;

	nimvalue[0] = 0;
	nimvalue[1] = 1;
	nimvalue[2] = 2;
	nimvalue[3] = 3;

	int j = 0;
	int left,right;
	for(i = 4;i <= max;i++)
	{
		for(j = 1;j <= (i/2) + 1;j++)
		{
			left = j - 1;
			right = i - j;
			search[nimvalue[left] ^ nimvalue[right]] = 1;

			right = i - j - 1;
			search[nimvalue[left] ^ nimvalue[right]] = 1;
		}

		for(j = 0;j < 201;j++)
		{
			if(search[j] == 0)
				break;
		}

		nimvalue[i] = j;

		for(j = 0;j <= max;j++)
			search[j] = 0;
		//printf("%d  ",nimvalue[i]);
	}

	int ans = 0;

	for(i = 0;i < m;i++)
		ans = ans ^ nimvalue[n[i]];

	if(ans == 0)
		printf("Second wins");
	else
		printf("First wins");
	return 0;
}