#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN 32
#define WPIECE 1
#define WPAWN 2
#define BPAWN 3
#define BPIECE 4
int board[8][8];
int checkmove(char token[])
{
int x1,y1,x2,y2;
y1=token[0]-'a';
x1=token[1]-'0'-1;
y2=token[2]-'a';
x2=token[3]-'0'-1;
printf("\n(%s) moving %d:%d to %d:%d\n",token
,x1
,y1
,x2
,y2
); switch(board[x1][y1])
{
case BPIECE:
board[x1][y1]=0;
board[x2][y2]=BPIECE;
break;
case WPIECE:
board[x1][y1]=0;
board[x2][y2]=WPIECE;
break;
case WPAWN:
if(y1==y2)
{
if(x2!=x1+1 && x2!=x1+2)
return 0;
if(board[x1+1][y2])
return 0;
if(x2==x1+1)
board[x2][y2]=WPAWN;
if(x2==x1+2)
{
if(board[x1+2][y2])
return 0;
board[x2][y2]=WPAWN;
}
} else {
if(y2!=y1+1 && y2!=y1-1)
return 0;
if(x2!=x1+1)
return 0;
if(board[x2][y2]==BPIECE || board[x2][y2]==BPAWN)
board[x2][y2]=WPAWN;
else
return 0;
}
board[x1][y1]=0;
break;
case BPAWN:
if(y1==y2)
{
if(x2!=x1-1 && x2!=x1-2)
return 0;
if(board[x1-1][y2])
return 0;
if(x2==x1-1)
board[x2][y2]=BPAWN;
if(x2==x1-2)
{
if(board[x1-2][y2])
return 0;
board[x2][y2]=BPAWN;
}
} else {
if(y2!=y1+1 && y2!=y1-1)
return 0;
if(x2!=x1-1)
return 0;
if(board[x2][y2]==WPIECE || board[x2][y2]==WPAWN)
board[x2][y2]=BPAWN;
else
return 0;
}
board[x1][y1]=0;
break;
}
return 1;
}
int main()
{
char line[LEN];
char *token;
int result[times];
memset(result
,0,sizeof(result
)); int linecount=0;
int wordcount;
for(int i=0;i<times;i++)
{
memset(board
,0,sizeof(board
)); for(int i=0;i<8;i++)
{
board[0][i]=WPIECE;
board[1][i]=WPAWN;
board[6][i]=BPAWN;
board[7][i]=BPIECE;
}
wordcount=0;
while(token!=NULL)
{
wordcount++;
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
}
}
if(!checkmove(token))
{
result[linecount]=wordcount;
break;
} else
}
linecount++;
}
for(int i=0;i<linecount;i++)
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2RlZmluZSBMRU4gMzIKCiNkZWZpbmUgV1BJRUNFIDEKI2RlZmluZSBXUEFXTiAyCiNkZWZpbmUgQlBBV04gMwojZGVmaW5lIEJQSUVDRSA0CgppbnQgYm9hcmRbOF1bOF07CgppbnQgY2hlY2ttb3ZlKGNoYXIgdG9rZW5bXSkKewoJaW50IHgxLHkxLHgyLHkyOwoJeTE9dG9rZW5bMF0tJ2EnOwoJeDE9dG9rZW5bMV0tJzAnLTE7Cgl5Mj10b2tlblsyXS0nYSc7Cgl4Mj10b2tlblszXS0nMCctMTsKCXByaW50ZigiXG4oJXMpIG1vdmluZyAlZDolZCB0byAlZDolZFxuIix0b2tlbix4MSx5MSx4Mix5Mik7Cglzd2l0Y2goYm9hcmRbeDFdW3kxXSkKCXsKCQljYXNlIEJQSUVDRToKCQkJYm9hcmRbeDFdW3kxXT0wOwoJCQlib2FyZFt4Ml1beTJdPUJQSUVDRTsKCQlicmVhazsKCQkKCQljYXNlIFdQSUVDRToKCQkJYm9hcmRbeDFdW3kxXT0wOwoJCQlib2FyZFt4Ml1beTJdPVdQSUVDRTsKCQlicmVhazsKCQkKCQljYXNlIFdQQVdOOgoJCQlpZih5MT09eTIpCgkJCXsKCQkJCWlmKHgyIT14MSsxICYmIHgyIT14MSsyKQoJCQkJCXJldHVybiAwOwoJCQkJaWYoYm9hcmRbeDErMV1beTJdKQoJCQkJCXJldHVybiAwOwoJCQkJaWYoeDI9PXgxKzEpCgkJCQkJYm9hcmRbeDJdW3kyXT1XUEFXTjsKCQkJCWlmKHgyPT14MSsyKQoJCQkJewoJCQkJCWlmKGJvYXJkW3gxKzJdW3kyXSkKCQkJCQkJcmV0dXJuIDA7CgkJCQkJYm9hcmRbeDJdW3kyXT1XUEFXTjsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCWlmKHkyIT15MSsxICYmIHkyIT15MS0xKQoJCQkJCXJldHVybiAwOwoJCQkJaWYoeDIhPXgxKzEpCgkJCQkJcmV0dXJuIDA7CgkJCQoJCQkJaWYoYm9hcmRbeDJdW3kyXT09QlBJRUNFIHx8IGJvYXJkW3gyXVt5Ml09PUJQQVdOKQoJCQkJCWJvYXJkW3gyXVt5Ml09V1BBV047CgkJCQllbHNlCgkJCQkJcmV0dXJuIDA7CgkJCX0KCQkJYm9hcmRbeDFdW3kxXT0wOwoJCWJyZWFrOwoKCQljYXNlIEJQQVdOOgoJCQoJCQlpZih5MT09eTIpCgkJCXsKCQkJCWlmKHgyIT14MS0xICYmIHgyIT14MS0yKQoJCQkJCXJldHVybiAwOwoJCQkJCgkJCQlpZihib2FyZFt4MS0xXVt5Ml0pCgkJCQkJcmV0dXJuIDA7CgkJCQkKCQkJCWlmKHgyPT14MS0xKQoJCQkJCWJvYXJkW3gyXVt5Ml09QlBBV047CgkJCgkJCQlpZih4Mj09eDEtMikKCQkJCXsKCQkJCQlpZihib2FyZFt4MS0yXVt5Ml0pCgkJCQkJCXJldHVybiAwOwoJCQkJCWJvYXJkW3gyXVt5Ml09QlBBV047CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlpZih5MiE9eTErMSAmJiB5MiE9eTEtMSkKCQkJCQlyZXR1cm4gMDsKCQkJCWlmKHgyIT14MS0xKQoJCQkJCXJldHVybiAwOwoJCQkKCQkJCWlmKGJvYXJkW3gyXVt5Ml09PVdQSUVDRSB8fCBib2FyZFt4Ml1beTJdPT1XUEFXTikKCQkJCQlib2FyZFt4Ml1beTJdPUJQQVdOOwoJCQkJZWxzZQoJCQkJCXJldHVybiAwOwoJCQl9CgkJCQoJCQlib2FyZFt4MV1beTFdPTA7CgkJYnJlYWs7CgoJCQkJCgl9CgkKCXJldHVybiAxOwp9CgkJCgppbnQgbWFpbigpCnsKCgljaGFyIGxpbmVbTEVOXTsKCWZnZXRzKGxpbmUsTEVOLHN0ZGluKTsKCWludCB0aW1lcz1hdG9pKGxpbmUpOwoJY2hhciAqdG9rZW47CglpbnQgcmVzdWx0W3RpbWVzXTsKCW1lbXNldChyZXN1bHQsMCxzaXplb2YocmVzdWx0KSk7CglpbnQgbGluZWNvdW50PTA7CglpbnQgd29yZGNvdW50OwoJZm9yKGludCBpPTA7aTx0aW1lcztpKyspCgl7CgkJbWVtc2V0KGJvYXJkLDAsc2l6ZW9mKGJvYXJkKSk7CgkJZm9yKGludCBpPTA7aTw4O2krKykKCQl7CgkJCQoJCQlib2FyZFswXVtpXT1XUElFQ0U7CgkJCWJvYXJkWzFdW2ldPVdQQVdOOwoJCQlib2FyZFs2XVtpXT1CUEFXTjsKCQkJYm9hcmRbN11baV09QlBJRUNFOwoJCX0KCQl3b3JkY291bnQ9MDsKCQlmZ2V0cyhsaW5lLExFTixzdGRpbik7CgkJdG9rZW49c3RydG9rKGxpbmUsIiAiKTsKCQl3aGlsZSh0b2tlbiE9TlVMTCkKCQl7CgkJCXdvcmRjb3VudCsrOwoJCQkKCQkJCgkJCQlmb3IoaW50IGk9MDtpPDg7aSsrKQoJCQkJewoJCQkJCWZvcihpbnQgaj0wO2o8ODtqKyspCgkJCQkJewoJCQkJCQlwcmludGYoIiVkICIsYm9hcmRbaV1bal0pOwoJCQkJCX0KCQkJCQlwcmludGYoIlxuIik7CgkJCQkJCgkJCQl9CgkJCQkKCQkJCQoJCQlpZighY2hlY2ttb3ZlKHRva2VuKSkKCQkJewoJCQkJcmVzdWx0W2xpbmVjb3VudF09d29yZGNvdW50OwoJCQkJYnJlYWs7CgkJCX0gZWxzZQoJCQkJdG9rZW49c3RydG9rKE5VTEwsIiAiKTsKCQl9CgkJbGluZWNvdW50Kys7CgkJCgl9CgkKCWZvcihpbnQgaT0wO2k8bGluZWNvdW50O2krKykKCQlwcmludGYoIiVkICIscmVzdWx0W2ldKTsKCXByaW50ZigiXG5cbiIpOwoJZm9yKGludCBpPTA7aTw4O2krKykKCXsKCQlmb3IoaW50IGo9MDtqPDg7aisrKQoJCXsKCQkJcHJpbnRmKCIlZCAiLGJvYXJkW2ldW2pdKTsKCQl9CgkJcHJpbnRmKCJcbiIpOwoJCQoJfQoJCglyZXR1cm4gMDsKfQ==