Untitled

 avatar
unknown
c_cpp
2 years ago
2.0 kB
6
Indexable
#include <stdio.h>

int main(){

    int lsc[20][20], tsc[20][20];
    int n, win = 0, step;
    int di[6] = {0, 0, 1, -1,-1, 1};//r l u d y=x y=-x
    int dj[6] = {1, -1,0, 0, 1, -1};

    scanf("%d", &n);

    for(int i = 0; i < 20; i++){
        for(int j = 0; j < 20; j++){
            lsc[i][j] = -1;
            tsc[i][j] = -1;
        }
    }

    for(int k = 1; k <= n; k++){

        int a,b;
        scanf("%d%d", &a, &b);
        if(win != 0) continue;
        
        if(k % 2 == 1){
            lsc[a][b] = 1;
            for(int i = 0; i < 6; i++){
                int cnt = 1;
                for(int j = 1; j < 5; j++){
                    if(lsc[a + j*di[i]][b + j*dj[i]] == 1) cnt++;
                    else break; 
                }
                for(int j = 1; j < 5; j++){
                    if(lsc[a - j*di[i]][b - j*dj[i]] == 1) cnt++;
                    else break; 
                }
                if(cnt == 5){
                    win = 1;
                    step = k;
                    //printf("step=%d", k);
                    break;
                }
            }
        }
        else{
            tsc[a][b] = 1;
            for(int i = 0; i < 6; i++){
                int cnt = 1;
                for(int j = 1; j < 5; j++){
                    if(tsc[a + j*di[i]][b + j*dj[i]] == 1) cnt++;
                    else break; 
                }
                for(int j = 1; j < 5; j++){
                    if(tsc[a - j*di[i]][b - j*dj[i]] == 1) cnt++;
                    else break; 
                }
                if(cnt == 5){
                    win = 2;
                    step = k;
                    break;
                }
            }
        }
    }
    
    if(win == 0) printf("There's no winner.\n");
    if(win == 1) printf("LSC wins at the %dth step.\n", step);
    if(win == 2) printf("TSC wins at the %dth step.\n", step);

}
Editor is loading...