#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
void shuffle(int *array, int size) {
    for (int i = size - 1; i > 0; i--) {
        int j 
= rand() % (i 
+ 1);         int tmp = array[j];
        array[j] = array[i];
        array[i] = tmp;
    }
}
 
int main() {
    int p1 = 0;
    int p2 = 0; 
    int c1[4][4], c2[4][4];
    int numbers[50];
    for (int i = 0; i < 50; i++) numbers[i] = i + 1;
    shuffle(numbers, 50);
    for (int i = 0; i < 4; i++) {
         for (int j = 0; j < 4; j++) {
             c1[i][j] = numbers[i * 4 + j];
         }
    }
    shuffle(numbers, 50);
    for (int i = 0; i < 4; i++) {
         for (int j = 0; j < 4; j++) {
             c2[i][j] = numbers[i * 4 + j];
         }
    }
    shuffle(numbers, 50);
    for (int k = 0; k < 50 && (p1 <= 16 || p2 <= 16); k++) {
        int sorteio = numbers[k];
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                if (c1[i][j] == sorteio) p1++;
                if (c2[i][j] == sorteio) p2++;
            }
        }
    }
    if (p1 
== 16) printf("\nBingo! Jogador 1 ganhou\n");     else if (p2 
== 16) printf("\nBingo! Jogador 2 ganhou\n"); }
 
//https://pt.stackoverflow.com/q/390787/101
				I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHRpbWUuaD4KCnZvaWQgc2h1ZmZsZShpbnQgKmFycmF5LCBpbnQgc2l6ZSkgewogICAgZm9yIChpbnQgaSA9IHNpemUgLSAxOyBpID4gMDsgaS0tKSB7CiAgICAgICAgaW50IGogPSByYW5kKCkgJSAoaSArIDEpOwogICAgICAgIGludCB0bXAgPSBhcnJheVtqXTsKICAgICAgICBhcnJheVtqXSA9IGFycmF5W2ldOwogICAgICAgIGFycmF5W2ldID0gdG1wOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIHNyYW5kKHRpbWUoTlVMTCkpOwogICAgaW50IHAxID0gMDsKICAgIGludCBwMiA9IDA7IAogICAgaW50IGMxWzRdWzRdLCBjMls0XVs0XTsKICAgIGludCBudW1iZXJzWzUwXTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTA7IGkrKykgbnVtYmVyc1tpXSA9IGkgKyAxOwogICAgc2h1ZmZsZShudW1iZXJzLCA1MCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGorKykgewogICAgICAgICAgICAgYzFbaV1bal0gPSBudW1iZXJzW2kgKiA0ICsgal07CiAgICAgICAgICAgICBwcmludGYoIiVpXHQiLCBjMVtpXVtqXSk7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQogICAgcHJpbnRmKCJcbiIpOwogICAgc2h1ZmZsZShudW1iZXJzLCA1MCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGorKykgewogICAgICAgICAgICAgYzJbaV1bal0gPSBudW1iZXJzW2kgKiA0ICsgal07CiAgICAgICAgICAgICBwcmludGYoIiVpXHQiLCBjMltpXVtqXSk7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQogICAgcHJpbnRmKCJcbiIpOwogICAgc2h1ZmZsZShudW1iZXJzLCA1MCk7CiAgICBmb3IgKGludCBrID0gMDsgayA8IDUwICYmIChwMSA8PSAxNiB8fCBwMiA8PSAxNik7IGsrKykgewogICAgICAgIGludCBzb3J0ZWlvID0gbnVtYmVyc1trXTsKICAgICAgICBwcmludGYgKCIlaSAiLCBzb3J0ZWlvKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGorKykgewogICAgICAgICAgICAgICAgaWYgKGMxW2ldW2pdID09IHNvcnRlaW8pIHAxKys7CiAgICAgICAgICAgICAgICBpZiAoYzJbaV1bal0gPT0gc29ydGVpbykgcDIrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmIChwMSA9PSAxNikgcHJpbnRmKCJcbkJpbmdvISBKb2dhZG9yIDEgZ2FuaG91XG4iKTsKICAgIGVsc2UgaWYgKHAyID09IDE2KSBwcmludGYoIlxuQmluZ28hIEpvZ2Fkb3IgMiBnYW5ob3VcbiIpOwogICAgZWxzZSBwcmludGYoIlxuZW1wYXRlIik7Cn0KCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9xLzM5MDc4Ny8xMDE=