Submission #94822

#TimeUsernameProblemLanguageResultExecution timeMemory
94822hhhhhhhhTreasure (different grader from official contest) (CEOI13_treasure2)C++14
0 / 100
2 ms380 KiB
//#include <printf.h>
#include "treasure.h"

int treasureCount;
int treasures[101][2];

void reportAll() {
    for (int i = 0; i < treasureCount; ++i) {
        Report(treasures[i][0], treasures[i][1]);
    }
}

void find(int r1, int c1, int row_size, int col_size) {
    int row_divide = row_size / 2, col_divide = col_size / 2;
    int row_remain = row_size - row_divide, col_remain = col_size - col_divide;


    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            int nr = r1 + (row_divide * i), nc = c1 + (col_divide * j);
            int new_row_size = (i == 0) ? row_divide : row_remain;
            int new_col_size = (j == 0) ? col_divide : col_remain;

            int num = countTreasure(nr, nc, nr + new_row_size - 1, nc + new_col_size - 1);
            if (num == new_row_size * new_col_size) {
                for (int k = 0; k < new_row_size; ++k) {
                    for (int l = 0; l < new_col_size; ++l) {
                        treasures[treasureCount][0] = nr + k;
                        treasures[treasureCount][1] = nc + l;
                        treasureCount++;
                    }
                }
            } else if (!num) {
            } else {
                find(nr, nc, new_row_size, new_col_size);
            }
        }
    }

}

void findTreasure(int N) {
    find(1, 1, N, N);
    reportAll();
}
#Verdict Execution timeMemoryGrader output
Fetching results...