📄 3960497_wa.cpp
字号:
#include <stdio.h>
#include <vector>
#include <string.h>
#include <algorithm>
using namespace std;
struct circle
{
int lx, rx, uy, dy;
}c[100];
int max(int a, int b)
{
return a < b ? b : a;
}
int min(int a, int b)
{
return a < b ? a : b;
}
int main()
{
int x, y, r;
int w, h, n;
int i, j;
while(scanf("%d%d%d", &w, &h, &n)==3){
for (i = 0; i < n; i++)
{
scanf("%d%d%d", &x, &y, &r);
c[i].lx = x - r;c[i].rx = x + r;
c[i].uy = y + r;c[i].dy = y - r;
}
int mark[100];
memset(mark, 0, sizeof(mark));
int ans = w * h;
bool flag;
loop:
flag = false;
for (i = 0; i < n; i++)
{
if (mark[i] == 1)
{
continue;
}
int lx, rx, uy, dy;
int xl, xr, yu, yd;
lx = c[i].lx;rx = c[i].rx;
uy = c[i].uy;dy = c[i].dy;
for (j = i + 1; j < n; j++)
{
if (mark[j] == 1)
{
continue;
}
xl = c[j].lx;xr = c[j].rx;
yd = c[j].dy;yu = c[j].uy;
if (rx >= lx && lx <= xr && uy >= yd && dy <= yu)
{
mark[j] = 1;
flag = true;
c[i].lx = min(lx, xl);c[i].rx = max(rx, xr);
c[i].uy = max(uy, yu);c[i].dy = min(dy, yd);
}
}
}
if (flag == true)
{
goto loop;
}
for (i = 0; i < n; i++)
{
if (mark[i] == 0)
{
ans -= (c[i].rx - c[i].lx) * (c[i].uy - c[i].dy);
}
}
printf("%d\n", ans);}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -