Help Me with the Game(imitate)
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 3630 | Accepted: 2319 |
Description
Input
Output
The description of the position of the pieces is a comma-separated list of terms describing the pieces of the appropriate player. The description of a piece consists of a single upper-case letter that denotes the type of the piece (except for pawns, for that this identifier is omitted). This letter is immediatelly followed by the position of the piece in the standard chess notation -- a lower-case letter between "a" and "h" that determines the column ("a" is the leftmost column in the input) and a single digit between 1 and 8 that determines the row (8 is the first row in the input).
The pieces in the description must appear in the following order: King("K"), Queens ("Q"), Rooks ("R"), Bishops ("B"), Knights ("N"), and pawns. Note that the numbers of pieces may differ from the initial position because of capturing the pieces and the promotions of pawns. In case two pieces of the same type appear in the input, the piece with the smaller row number must be described before the other one if the pieces are white, and the one with the larger row number must be described first if the pieces are black. If two pieces of the same type appear in the same row, the one with the smaller column letter must appear first.
Sample Input
+---+---+---+---+---+---+---+---+
|.r.|:::|.b.|:q:|.k.|:::|.n.|:r:|
+---+---+---+---+---+---+---+---+
|:p:|.p.|:p:|.p.|:p:|.p.|:::|.p.|
+---+---+---+---+---+---+---+---+
|...|:::|.n.|:::|...|:::|...|:p:|
+---+---+---+---+---+---+---+---+
|:::|...|:::|...|:::|...|:::|...|
+---+---+---+---+---+---+---+---+
|...|:::|...|:::|.P.|:::|...|:::|
+---+---+---+---+---+---+---+---+
|:P:|...|:::|...|:::|...|:::|...|
+---+---+---+---+---+---+---+---+
|.P.|:::|.P.|:P:|...|:P:|.P.|:P:|
+---+---+---+---+---+---+---+---+
|:R:|.N.|:B:|.Q.|:K:|.B.|:::|.R.|
+---+---+---+---+---+---+---+---+
Sample Output
White: Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4
Black: Ke8,Qd8,Ra8,Rh8,Bc8,Ng8,Nc6,a7,b7,c7,d7,e7,f7,h7,h6
Source
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
#include<algorithm>
using namespace std;
char st[] , chess[][] ;
int a[][] ; struct white
{
char ch , row , col;
int pow ;
}wh[]; struct black
{
char ch , row , col ;
int pow ;
}bl[]; bool cmp2 (white a , white b)
{
if (a.pow < b.pow)
return ;
if (a.pow > b.pow)
return ;
if (a.pow == b.pow ) {
if (a.row == b.row)
return a.col < b.col ;
else
return a.row < b.row ;
}
} bool cmp1 (black a , black b)
{
if (a.pow < b.pow)
return ;
if (a.pow > b.pow)
return ;
if (a.pow == b.pow ) {
if (a.row == b.row)
return a.col < b.col ;
else
return a.row > b.row ;
}
} int main ()
{
// freopen ("a.txt" , "r" , stdin) ;
for (int i = ; i <= ; i++) {
if (i & )
gets (st) ;
else
gets (chess[i / ]) ;
}
int k , f; for (int i = ; i <= ; i++) {
k = ;
for (int j = ; j < ; j += , k++) {
switch ( chess[i][j] )
{
case 'k' : a[i][k] = ; break ;
case 'q' : a[i][k] = ; break ;
case 'r' : a[i][k] = ; break ;
case 'b' : a[i][k] = ; break ;
case 'n' : a[i][k] = ; break ;
case 'p' : a[i][k] = ; break ;
case 'K' : a[i][k] = - ; break ;
case 'Q' : a[i][k] = - ; break ;
case 'R' : a[i][k] = - ; break ;
case 'B' : a[i][k] = - ; break ;
case 'N' : a[i][k] = - ; break ;
case 'P' : a[i][k] = - ; break ;
case ':' : a[i][k] = ; break ;
case '.' : a[i][k] = ; break ;
default : break ;
}
}
}
/* for (int i = 1 ; i <= 8 ; i++) {
for (int j = 1 ; j <= 8 ; j++) {
printf ("%d\t" , a[i][j]) ;
}
puts ("") ;
}*/
k = , f = ;
for (int i = ; i <= ; i++) {
for (int j = ; j <= ; j++) {
if (a[i][j] > ) {
bl[k].pow = a[i][j] ;
bl[k].row = '' + - i ;
bl[k].col = 'a' + j - ;
switch (a[i][j])
{
case : bl[k].ch = 'K' ; break ;
case : bl[k].ch = 'Q' ; break ;
case : bl[k].ch = 'R' ; break ;
case : bl[k].ch = 'B' ; break ;
case : bl[k].ch = 'N' ; break ;
default : break ;
}
k++ ;
}
if (a[i][j] < ) {
wh[f].pow = -a[i][j] ;
wh[f].row = '' + - i ;
wh[f].col = 'a' + j - ;
switch (-a[i][j])
{
case : wh[f].ch = 'K' ; break ;
case : wh[f].ch = 'Q' ; break ;
case : wh[f].ch = 'R' ; break ;
case : wh[f].ch = 'B' ; break ;
case : wh[f].ch = 'N' ; break ;
default : break ;
}
f++ ;
}
}
} sort (bl , bl + k , cmp1) ;
sort (wh , wh + f , cmp2) ; printf ("White: ") ;
for (int i = ; i < f ; i++) {
// printf ("wh[%d].pow = %d\n" , i , wh[i].pow) ;
if (wh[i].pow != )
printf ("%c" , wh[i].ch) ;
printf ("%c%c" , wh[i].col , wh[i].row ) ;
if (i != f - )
printf (",") ;
}
puts ("") ; printf ("Black: ") ;
for (int i = ; i < k ; i++) {
if (bl[i].pow != )
printf ("%c" , bl[i].ch) ;
printf ("%c%c" , bl[i].col , bl[i].row ) ;
if (i != k - )
printf (",") ;
}
puts ("") ;
return ;
}
Help Me with the Game(imitate)的更多相关文章
- Emag eht htiw Em Pleh(imitate)
Emag eht htiw Em Pleh Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2901 Accepted: ...
- Robot Motion(imitate)
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11065 Accepted: 5378 Des ...
- Crashing Robots(imitate)
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8124 Accepted: 3528 D ...
- Parencodings(imitate)
Parencodings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20679 Accepted: 12436 De ...
- [JavaScript] Imitate String.Format() in c#
Definition if (!String.prototype.format) { String.prototype.format = function () { var args = argume ...
- Basic Tutorials of Redis(8) -Transaction
Data play an important part in our project,how can we ensure correctness of the data and prevent the ...
- 第一届山东省ACM——Balloons(java)
Description Both Saya and Kudo like balloons. One day, they heard that in the central park, there wi ...
- Essential controls for web app
AUTO-COMPLETE/AUTO-SUGGEST Auto-complete using Vaadin Offer auto-suggest or auto-complete to help yo ...
- sqlmap用户手册 | WooYun知识库
sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息. 原文:http://drops.wooyun.org/tips/143 ============ ...
随机推荐
- 手把手教你Linux服务器集群部署.net网站 - 让MVC网站运行起来
一.Linux下面安装需要软件 我们这里需要安装的软件有: 1) Mono 3.2.8 : C#跨平台编译器,能使.Net运行与Linux下,目前.net 4.0可以完美运行在该平台下 2) ngin ...
- JqueryEasyUI教程入门篇
什么是jQueryEasyUI? JqueryUI是一组基于jQuery的UI插件集合 学习jQueryEasyUI的条件? 必须掌握Jquery的基本语法知识 jQueryEasyUI的特点? 1. ...
- Object C学习笔记26-文件管理(二)
上一篇简单的介绍了如何获取文件属性,删除,拷贝文件等,本文继续记录Object C中文件IO操作. 一. 获取文件的执行主目录 在Object C中提供了一个方法 NSHomeDirectory() ...
- LINQ找出重复和不重复的元素及linq OrderBy 方法 两个字段同时排序有关问题
//重复元素:3,4,5 //不重复元素:1,8,9 , , , , , , , , , , }; //不重复元素 var unique = arr.GroupBy(i => i) .Where ...
- android之文件存储和读取
一.权限问题 手机中存储空间分为ROM和SDcard,ROM中放着操作系统以及我们安装的APP,而sdcard中一般放置着我们APP产生的数据.当然,Android也为每个APP在ROM中创建一个数据 ...
- [设计模式] javascript 之 单件模式
单件模式说明 1. 说明:单件模式,就是静态化的访问中已经实例化的对象,这个对象只能通过一个唯一的入口访问,已经实例或待实例化的对象:面向对象语言如Java, .Net C#这样的服务端动态语言里,能 ...
- AngularJs-指令1
前言: 前面写的有些乱,并且有些罗嗦,以后会注意的.希望我写的文章能帮助大家. 1,什么是指令 简单的说,指令是angularjs在html页面中建立一套自己能识别的标签元素.属性.类和注释,用来达到 ...
- 写在读ng之前的基础知识----笔记
如果要看angular的代码, 先把这个给看了, 司徒的干货. /******************************************************************* ...
- TreeSet和TreeMap的输出
如果加入TreeSet和TreeMap的元素没有实现comprable中的compareTo()方法,那么会报错"treeset cannot be cast to java.lang.Co ...
- echo 和 cat 的 区别
tt="1 10 17 10-134-9-154.xml" echo $tt 只是单纯地打印出tt保存的这些变量 cat $tt 则会对tt 中保存的变量文件挨个打印出来