Submission #516342

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
5163422022-01-21 06:48:30jk410Furniture (JOI20_furniture)C++17
100 / 100
382 ms14888 KiB
#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])
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...