Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Source #670877:
- #include<stdio.h>
- int n;
- int k;
- int table[110][110];
- bool IsInBound(int i,int n){
- return (0 <= i && i < n);
- }
- int MoveToI(char c){
- switch(c){
- case ('S'):return 1;
- case ('E'):return 0;
- case ('W'):return 0;
- case ('N'):return -1;
- }
- }
- int MoveToJ(char c){
- switch(c){
- case ('S'):return 0;
- case ('E'):return 1;
- case ('W'):return -1;
- case ('N'):return 0;
- }
- }
- typedef struct{
- int I;
- int J;
- }pos;
- int max(int a,int b){
- return (a>b?a:b);
- }
- int main()
- {
- scanf("%d %d",&n,&k);
- pos player[5];
- table[0][n-1] = 'A'; player[1].I = 0;player[1].J = n-1;
- table[n-1][n-1] = 'B'; player[2].I = n-1;player[2].J = n-1;
- table[n-1][0] = 'C';player[3].I = n-1;player[3].J = 0;
- table[0][0] = 'D';player[4].I = 0;player[4].J = 0;
- char move[5][k+1];for(int i=0;i<=4;i++)move[i][k] = '\0';
- /* for(int i=1;i<=k*4;i++){
- scanf(" %c",&move[(i+1)/2][(i-1)%k]);
- }*/
- for(int i=1;i<=4;i++){
- for(int j=0;j<k;j++){
- scanf(" %c",&move[i][j]);
- }
- }
- for(int j=0;j<k;j++){ // turn
- for(int i=1;i<=4;i++){ //player
- int NewI = player[i].I + MoveToI(move[i][j]);
- int NewJ = player[i].J + MoveToJ(move[i][j]);
- if(IsInBound(NewI , n) && IsInBound(NewJ , n)){
- if(table[NewI][NewJ] <= 4){
- table[player[i].I][player[i].J] = i;
- table[NewI][NewJ] = 'A' + i - 1;
- player[i].I = NewI;
- player[i].J = NewJ;
- }
- }
- }
- }
- int score[5];for(int i=0;i<5;i++)score[i] = 0;
- for(int i=0;i<n;i++){
- for(int j=0;j<n;j++){
- if(table[i][j] > 4){
- score[table[i][j] - 'A' + 1]++;
- }else{
- score[table[i][j]]++;
- }
- }
- }
- if(score[0] > 0){
- printf("No");
- return 0;
- }
- int win = -2e9;
- for(int i=1;i<=4;i++){
- win = max(win,score[i]);
- }
- int cwin = 0;
- for(int i=1;i<=4;i++){
- if(score[i] == win){
- cwin++;
- }
- }
- printf("%d %d\n",cwin,win);
- for(int i=1;i<=4;i++){
- if(score[i] == win){
- printf("%d\n",i);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment