Paste Search Dynamic
Recent pastes
Bingo
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #define N_MAX 10
  4. #define M_MAX 256
  5. #define NAME_LENGTH 64
  6.  
  7. bool bingo(int board[M_MAX][M_MAX], int m) {
  8.     for(int col = 0; col < m; col++) {
  9.         int row = 0;
  10.         while(row < m && board[row][col] == -1)
  11.             row++;
  12.         if(row == m)
  13.             return true;
  14.     }
  15.     for(int row = 0; row < m; row++) {
  16.         int col = 0;
  17.         while(col < m && board[row][col] == -1)
  18.             col++;
  19.         if(col == m)
  20.             return true;
  21.     }
  22.     int row = 0, col = 0;
  23.     bool diagBingo = true;
  24.     while(diagBingo && row < m && col < m) {
  25.         diagBingo = (board[row][col] == -1);
  26.         row++;
  27.         col++;
  28.     }
  29.     if(diagBingo == true)
  30.         return true;
  31.     diagBingo = true;
  32.     row = m-1; col = 0;
  33.     while(diagBingo && row >= 0 && col < m) {
  34.         diagBingo = (board[row][col] == -1);
  35.         row--;
  36.         col++;
  37.     }
  38.     return diagBingo;
  39. }
  40.  
  41. int main() {
  42.     int n, m;
  43.     scanf("%d%d", &n, &m);
  44.     char names[N_MAX][NAME_LENGTH];
  45.     int boards[N_MAX][M_MAX][M_MAX] = {0}, index[N_MAX][M_MAX*M_MAX][2];
  46.     int num;
  47.     for(int i = 0; i < n; i++) {
  48.         scanf("%s", &names[i]);
  49.         for(int j = 0; j < m; j++) {
  50.             for(int k = 0; k < m; k++) {
  51.                 scanf("%d", &num);
  52.                 boards[i][j][k] = num;
  53.                 index[i][num-1][0] = j;
  54.                 index[i][num-1][1] = k;
  55.             }
  56.         }
  57.     }
  58.     bool winner = false;
  59.     int winners[N_MAX] = {0};
  60.     while(!winner) {
  61.         scanf("%d", &num);
  62.         for(int i = 0; i < n; i++) {
  63.             boards[i][index[i][num-1][0]][index[i][num-1][1]] = -1;
  64.             if(bingo(boards[i], m)) {
  65.                 winners[i] = 1;
  66.                 winner = true;
  67.             }
  68.         }
  69.     }
  70.     printf("%d", num);
  71.     for(int i = 0; i < n; i++)
  72.         if(winners[i] == 1)
  73.             printf(" %s", names[i]);
  74.     return 0;
  75. }
Parsed in 0.009 seconds