首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hdu2999 Stone Game, Why are you always there

2013-10-03 
hdu2999 Stone Game, Why are you always there?Stone Game, Why are you always there?Time Limit: 2000/

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;}

热点排行