under control

来源:互联网 发布:服务器带宽测试软件 编辑:程序博客网 时间:2024/05/01 06:55

100202B

#include<iostream>#include<Set>#include<cstdio>#define mp make_pairusing namespace std;typedef pair<int,int> PII;int n,x,y,k;int board[110][110];set<PII>s1;set<PII>s2;int abs(int x){if(x<0)return -x;return x;}void check(int x,int y){PII v=mp(x,y);if(s1.count(v)||s2.count(v))//这个点是黑的或者这个点用过了 return;if(!s1.count(PII(x-1,y))&&!s1.count(PII(x-1,y-1))&&!s1.count(PII(x,y-1)))return;if(!s1.count(PII(x-1,y))&&!s1.count(PII(x-1,y+1))&&!s1.count(PII(x,y+1)))return;if(!s1.count(PII(x,y+1))&&!s1.count(PII(x+1,y+1))&&!s1.count(PII(x+1,y)))return;if(!s1.count(PII(x+1,y))&&!s1.count(PII(x+1,y-1))&&!s1.count(PII(x,y-1)))return;//board[x][y]=1;s2.insert(v);}int main(){freopen("control.in","r",stdin);freopen("control.out","w",stdout);cin>>n;while(n--){cin>>x>>y>>k;for(int i=x-k-1;i<=x+k+1;i++)for(int j=y-k-1;j<=y+k+1;j++)if((i!=x&&j!=y&&abs(i-x)+abs(j-y)<=k+2)||(abs(i-x)+abs(j-y)<=k+1)){//board[i][j]=1;s1.insert(make_pair(i,j));}}for(set<PII>::iterator it=s1.begin();it!=s1.end();it++){for(int i=it->first-1;i<=it->first+1;i++)for(int j=it->second-1;j<=it->second+1;j++)check(i,j);}/*for(int i=x-k-1;i<=x+k+1;i++){for(int j=y-k-1;j<=y+k+1;j++)cout<<board[i][j];cout<<endl;}*/cout<<s1.size()+s2.size()<<endl;fclose(stdin);fclose(stdout);return 0;} 


0 0