제출 #90636

#제출 시각아이디문제언어결과실행 시간메모리
90636314rate보물 찾기 (CEOI13_treasure2)C++14
36 / 100
2 ms676 KiB
#include "treasure.h" #include <bits/stdc++.h> using namespace std; const int N=100+5; int n; int v[N][N]; int slove(int r1,int c1,int r2,int c2,int lft) { int dr=r2-r1+1; int dc=c2-c1+1; if(dr<=0 || dc<=0) { return 0; } int x; if(lft==-1) { x=countTreasure(r1,c1,r2,c2); } else { x=lft; } if(x==0) return 0; if(x==dr*dc) { for(int r=r1;r<=r2;r++) { for(int c=c1;c<=c2;c++) { v[r][c]=1; } } return x; } int rn=(r1+r2)>>1; int cn=(c1+c2)>>1; lft-=slove(r1,c1,rn,cn,-1); lft-=slove(r1,cn+1,rn,c2,-1); lft-=slove(rn+1,c1,r2,cn,-1); slove(rn+1,cn+1,r2,c2,lft); return x; } void findTreasure (int N) { int n=N; slove(1,1,n,n,-1); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(v[i][j]) { Report(i,j); } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...