像又不像暴枚
2024-10-14 20:07:45
发布于:广东
8阅读
0回复
0点赞
#include <bits/stdc++.h>
#define ll long long
#define DEBUG true
constexpr int MAXN = 1e9;
using namespace std;
struct node{
int sx,sy;
};
int vis[1005][1005];
vector<node> k[1005][1005];
bool find(int x,int y){
bool flag1 = 0,flag2 = 0,flag3 = 0,flag4 = 0;
for(int i = 0;i < k[x][y].size();i ++){
if(k[x][y][i].sx == x + 1 and k[x][y][i].sy == y){
flag1 = 1;
}
if(k[x][y][i].sx == x and k[x][y][i].sy == y + 1){
flag2 = 1;
}
}
for(int i = 0;i < k[x + 1][y + 1].size();i ++){
if(k[x + 1][y + 1][i].sx == x + 1 and k[x + 1][y + 1][i].sy == y){
flag3 = 1;
}
if(k[x + 1][y + 1][i].sx == x and k[x + 1][y + 1][i].sy == y + 1){
flag4 = 1;
}
}
return flag1 == 1 and flag2 == 1 and flag3 == 1 and flag4 == 1;
}
int main(){
int n,m,q;
int ans1 = 0,ans2 = 0;
cin >> n >> m >> q;
for(int g = 0;g < q * 2;g ++){
int x,y,x1,y1;
cin >> x >> y >> x1 >> y1;
x --;
y --;
x1 --;
y1 --;
k[x][y].push_back({x1,y1});
k[x1][y1].push_back({x,y});
int l1 = max(x - 1,0);
int l2 = max(y - 1,0);
int r1 = min(n - 1,x + 1);
int r2 = min(m - 1,y + 1);
for(int i = l1;i < r1;i ++){
for(int j = l2;j < r2;j ++){
if(find(i,j) and vis[i][j] == 0){
if(g % 2 == 0){
ans1 ++;
} else {
ans2 ++;
}
vis[i][j] = 1;
}
}
}
}
cout << ans1 << " " << ans2;
return 0;
}
这里空空如也
有帮助,赞一个