CodeChef submission 136773 (C++ 4.3.2) plaintext list. Status: AC, problem SNCK01, contest SNACKDWN. By Emotional_Expression (Emotional_Expression), 2009-11-21 23:56:16.
#include <cstdio> #include <cmath> #include <cstring> using namespace std; int data[50][50]; int n, m; int prec[65][51]; int main(void) { for(int i=0;i<=64;i++) { for(int j=0;j<51;j++) { if(j==0) prec[i][j]=i; else { bool isExist[65]; for(int k=1;k<=j;k++) isExist[prec[i][j-k]]=true; int cur=0; while(isExist[cur]) cur++; prec[i][j]=cur; } } } int t; while(t--) { int res=0; for(int i=0;i<n;i++) { int bef=0, nim[51]; bool isExist[65]; for(int j=m-1;j>=0;j--) { for(int k=0;k<=data[i][j];k++) { if(k==0) { if(j==m-1) nim[k]=0; else nim[k]=bef; } else { /* memset(isExist, 0, sizeof(isExist)); for(int q=1;q<=k;q++) isExist[nim[k-q]]=true; int cur=0; while(isExist[cur]) cur++;*/ nim[k]=prec[bef][k]; } } bef=nim[data[i][j]]; } res^=nim[data[i][0]]; } } return 0; }
Comments

