SuitNdtie

Conquerer PROG 1033 final

Mar 27th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.93 KB | None | 0 0
  1. Source #670877:
  2. #include<stdio.h>
  3. int n;
  4. int k;
  5. int table[110][110];
  6. bool IsInBound(int i,int n){
  7.     return (0 <= i && i < n);
  8. }
  9. int MoveToI(char c){
  10.     switch(c){
  11.         case ('S'):return 1;
  12.         case ('E'):return 0;
  13.         case ('W'):return 0;
  14.         case ('N'):return -1;
  15.     }
  16. }
  17. int MoveToJ(char c){
  18.     switch(c){
  19.         case ('S'):return 0;
  20.         case ('E'):return 1;
  21.         case ('W'):return -1;
  22.         case ('N'):return 0;
  23.     }
  24. }
  25. typedef struct{
  26.     int I;
  27.     int J;
  28. }pos;
  29. int max(int a,int b){
  30.     return (a>b?a:b);
  31. }
  32.  
  33. int main()
  34. {
  35.     scanf("%d %d",&n,&k);
  36.     pos player[5];
  37.     table[0][n-1] = 'A'; player[1].I = 0;player[1].J = n-1;
  38.     table[n-1][n-1] = 'B'; player[2].I = n-1;player[2].J = n-1;
  39.     table[n-1][0] = 'C';player[3].I = n-1;player[3].J = 0;
  40.     table[0][0] = 'D';player[4].I = 0;player[4].J = 0;
  41.    
  42.     char move[5][k+1];for(int i=0;i<=4;i++)move[i][k] = '\0';
  43. /*  for(int i=1;i<=k*4;i++){
  44.         scanf(" %c",&move[(i+1)/2][(i-1)%k]);
  45.     }*/
  46.     for(int i=1;i<=4;i++){
  47.         for(int j=0;j<k;j++){
  48.             scanf(" %c",&move[i][j]);
  49.         }
  50.     }
  51.     for(int j=0;j<k;j++){ // turn
  52.         for(int i=1;i<=4;i++){ //player
  53.             int NewI = player[i].I + MoveToI(move[i][j]);
  54.             int NewJ = player[i].J + MoveToJ(move[i][j]);
  55.             if(IsInBound(NewI , n) && IsInBound(NewJ , n)){
  56.                 if(table[NewI][NewJ] <= 4){
  57.                     table[player[i].I][player[i].J] = i;
  58.                     table[NewI][NewJ] = 'A' + i - 1;
  59.                     player[i].I = NewI;
  60.                     player[i].J = NewJ;
  61.                 }
  62.             }
  63.         }
  64.     }
  65.     int score[5];for(int i=0;i<5;i++)score[i] = 0;
  66.    
  67.     for(int i=0;i<n;i++){
  68.         for(int j=0;j<n;j++){
  69.            
  70.             if(table[i][j] > 4){
  71.                 score[table[i][j] - 'A' + 1]++;
  72.             }else{
  73.                 score[table[i][j]]++;
  74.             }
  75.         }
  76.     }
  77.     if(score[0] > 0){
  78.         printf("No");
  79.         return 0;
  80.     }
  81.    
  82.     int win = -2e9;
  83.     for(int i=1;i<=4;i++){
  84.         win = max(win,score[i]);
  85.     }
  86.     int cwin = 0;
  87.     for(int i=1;i<=4;i++){
  88.         if(score[i] == win){
  89.             cwin++;
  90.         }
  91.     }
  92.     printf("%d %d\n",cwin,win);
  93.     for(int i=1;i<=4;i++){
  94.         if(score[i] == win){
  95.             printf("%d\n",i);
  96.         }
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment