读书人

hdu2999 Stone Game, Why are you alw

发布时间: 2013-10-03 17:28:15 作者: rapoo

hdu2999 Stone Game, Why are you always there?

Stone Game, Why are you always there?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 353 Accepted Submission(s): 117


Problem DescriptionInputOutputSample InputSample Output#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;#define mem(a,b) memset(a,b,sizeof(a))#define M 10050int pri[M],a[M],cnt;int getsg(int n){ if(pri[n]!=-1)return pri[n]; int vis[M]; mem(vis,0); for(int i=0;i<cnt&&a[i]<=n;i++){ for(int j=0;j<=n-a[i];j++){ if(pri[j]==-1)pri[j]=getsg(j); if(pri[n-j-a[i]]==-1)pri[n-j-a[i]]=getsg(n-j-a[i]); vis[pri[j]^pri[n-j-a[i]]]=1; } } for(int i=0;;i++) if(!vis[i]) return i;}int main(){ int n,i,k,x; while(scanf("%d",&n)!=EOF){ mem(pri,-1); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); for(i=1,cnt=0;i<n;i++){ if(a[i]!=a[cnt])a[++cnt]=a[i]; } cnt++; scanf("%d",&k); for(i=0;i<k;i++){ scanf("%d",&x); if(getsg(x))printf("1\n"); else printf("2\n"); } } return 0;}

读书人网 >编程

热点推荐