Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

怒贴一发 写死我了

Posted by luo7576 at 2016-06-06 21:04:22 on Problem 2996
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
char li[100];
struct luo
{
    char x;
    int y,zi;
};
struct luo map[20][10];
struct luo ans[5][500];
int chance(char p)
{
    if(p=='K'||p=='k') return 1;
    if(p=='Q'||p=='q') return 2;
    if(p=='R'||p=='r') return 3;
    if(p=='B'||p=='b') return 4;
    if(p=='N'||p=='n') return 5;
    if(p=='P'||p=='p') return 6;
    if(p==':'||p=='.') return -1;
}
char su1(int k)
{
    if(k==0)
        return 'a';
    if(k==1)
        return 'b';
    if(k==2)
        return 'c';
    if(k==3)
        return 'd';
    if(k==4)
        return 'e';
    if(k==5)
        return 'f';
    if(k==6)
        return 'g';
    if(k==7)
        return 'h';
}
int su2(int k)
{
    if(k==4)
        return 4;
    if(k==5)
        return 3;
    if(k==6)
        return 2;
    if(k==7)
        return 1;
    if(k==0)
        return 8;
    if(k==1)
        return 7;
    if(k==2)
        return 6;
    if(k==3)
        return 5;
}
bool cmp(luo a,luo b)
{
    if(a.zi==b.zi)
    {
        if(a.y==b.y)
            return a.x<b.x;
        return a.y<b.y;
    }
    return a.zi<b.zi;
}
bool cmp1(luo a,luo b)
{
    if(a.zi==b.zi)
    {
        if(a.y==b.y)
            return a.x<b.x;
        return a.y>b.y;
    }
    return a.zi<b.zi;
}
int main()
{
    int k=0,flag,l;
    for(int i=0; i<17; i++)
    {
        memset(li,0,sizeof(li));
        scanf("%s",li);
        if(i%2==0)
            continue;
        int h=strlen(li);
        flag=0;
        l=0;
        for(int j=0; j<33;)
        {
            if(flag==0)
            {
                j+=2;
                flag=1;
            }
            else if(flag!=0)
            {
                j+=4;
            }
            map[k][l].x=su1(l);
            map[k][l].y=su2(k);
            map[k][l++].zi=chance(li[j]);
        }
        k++;
    }
    l--;
    int w1=0;
    for(int i=7; i>3; i--)
    {
        for(int j=0; j<l; j++)
        {
            if(map[i][j].zi!=-1)
            {
                ans[0][w1].x=map[i][j].x;
                ans[0][w1].y=map[i][j].y;
                ans[0][w1++].zi=map[i][j].zi;
            }
        }
    }
    sort(ans[0],ans[0]+w1,cmp);
    int w2=0;
    for(int i=0; i<4; i++)
    {
        for(int j=0; j<l; j++)
        {
            if(map[i][j].zi!=-1)
            {
                ans[1][w2].x=map[i][j].x;
                ans[1][w2].y=map[i][j].y;
                ans[1][w2++].zi=map[i][j].zi;
            }
        }
    }
    sort(ans[1],ans[1]+w2,cmp1);
    flag=0;
    printf("White: ");
    for(int i=0;i<w1;i++)
    {
        if(i!=0)
            printf(",");
        if(ans[0][i].zi==1)
        {
            printf("K%c%d",ans[0][i].x,ans[0][i].y);
        }
        if(ans[0][i].zi==2)
        {
            printf("Q%c%d",ans[0][i].x,ans[0][i].y);
        }
        if(ans[0][i].zi==3)
        {
            printf("R%c%d",ans[0][i].x,ans[0][i].y);
        }
        if(ans[0][i].zi==4)
        {
            printf("B%c%d",ans[0][i].x,ans[0][i].y);
        }
        if(ans[0][i].zi==5)
        {
            printf("N%c%d",ans[0][i].x,ans[0][i].y);
        }
        if(ans[0][i].zi==6)
        {
            printf("%c%d",ans[0][i].x,ans[0][i].y);
        }
    }
    cout<<endl;
    flag=0;
    printf("Black: ");
    for(int i=0;i<w2;i++)
    {
        if(i!=0)
            printf(",");
        if(ans[1][i].zi==1)
        {
            printf("K%c%d",ans[1][i].x,ans[1][i].y);
        }
        if(ans[1][i].zi==2)
        {
            printf("Q%c%d",ans[1][i].x,ans[1][i].y);
        }
        if(ans[1][i].zi==3)
        {
            printf("R%c%d",ans[1][i].x,ans[1][i].y);
        }
        if(ans[1][i].zi==4)
        {
            printf("B%c%d",ans[1][i].x,ans[1][i].y);
        }
        if(ans[1][i].zi==5)
        {
            printf("N%c%d",ans[1][i].x,ans[1][i].y);
        }
        if(ans[1][i].zi==6)
        {
            printf("%c%d",ans[1][i].x,ans[1][i].y);
        }
    }
    cout<<endl;
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator