# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
516342 | jk410 | Furniture (JOI20_furniture) | C++17 | 382 ms | 14888 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
struct pos{
int x,y;
};
int N,M,Q;
bool A[1001][1001];
bool DP1[1001][1001],DP2[1002][1002];
int Cnt[2001];
int dx[2]={0,1},dy[2]={1,0};
void solve(int qx,int qy){
if (DP1[qx][qy]&&DP2[qx][qy]&&Cnt[qx+qy]==1){
cout<<"0\n";
return;
}
A[qx][qy]=true;
if (DP1[qx][qy]&&DP2[qx][qy])
Cnt[qx+qy]--;
DP1[qx][qy]=false;
DP2[qx][qy]=false;
queue<pos> q;
q.push({qx,qy});
while (!q.empty()){
pos t=q.front();
q.pop();
for (int i=0; i<2; i++){
int x=t.x+dx[i],y=t.y+dy[i];
if (x>N||y>M||A[x][y]||!DP1[x][y]||DP1[x-1][y]||DP1[x][y-1])
continue;
if (DP1[x][y]&&DP2[x][y])
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |