Submission #78588

#TimeUsernameProblemLanguageResultExecution timeMemory
78588stefdascaTreasure (different grader from official contest) (CEOI13_treasure2)C++14
53 / 100
3 ms552 KiB
#include<bits/stdc++.h> #include "treasure.h" using namespace std; int gg[102][102]; void Divide(int L1, int C1, int L2, int C2, int qt) { if(qt == (L2 - L1 + 1) * (C2 - C1 + 1)) { for(int i = L1; i <= L2; ++i) for(int j = C1; j <= C2; ++j) gg[i][j] = 1; return; } int midd = (L1 + L2) / 2; int midd2 = (C1 + C2) / 2; int rasp = 0, sum = 0; rasp = countTreasure(L1, C1, midd, midd2); sum += rasp; if(rasp != 0) Divide(L1, C1, midd, midd2, rasp); if(sum == qt) return; if(midd2 + 1 <= C2) { int rr2 = rasp; rasp = countTreasure(L1, C1, midd, C2) - rr2; sum += rasp; if(rasp != 0) Divide(L1, midd2 + 1, midd, C2, rasp); } if(sum == qt) return; if(midd + 1 <= L2) { rasp = countTreasure(midd + 1, C1, L2, midd2); if(rasp != 0) Divide(midd + 1, C1, L2, midd2, rasp); sum += rasp; } if(sum == qt) return; if(midd < L2 && midd2 < C2 && qt - sum != 0) Divide(midd + 1, midd2 + 1, L2, C2, qt - sum); } void findTreasure(int N) { int sol; sol = countTreasure(1, 1, N, N); Divide(1, 1, N, N, sol); for(int i = 1; i <= N; ++i) for(int j = 1; j <= N; ++j) if(gg[i][j]) Report(i, j); return; }
#Verdict Execution timeMemoryGrader output
Fetching results...