# include <stdio.h>
# include <string.h>
# include <vector>
# include <queue>
using namespace std;
struct node
{
int x,y;
int de;
node (int a,int b,int c)
{
x=a;
y=b;
de=c;
}
};
const int MAXN=210;
vector< pair<int,int> >::iterator it;
int d[5][2]= {0,0,-1,0,1,0,0,-1,0,1};
int r,c;
//直接暴力模拟,注意题意:若水珠原来大小为3,恰好某一时刻有三个水珠到达,则六个小水珠同时碰撞产生四个方向的小水珠
struct mapp
{
int siz,time;
} mp[MAXN][MAXN];
vector <node> vec;
queue <node> q;
vector < pair<int,int> > ans;
bool ok (int x,int y)
{
if(x>=1&&x<=r&&y>=1&&y<=c) return true;
return false;
}
int main ()
{
int i,j,n,t,x,y,s,time;
//freopen("1010.in","r",stdin);
while(scanf("%d%d%d%d",&r,&c,&n,&t)!=EOF)
{
memset(mp,0,sizeof(mp));
ans.clear();
for(int i=1; i<=n; i++)
{
scanf("%d%d%d",&x,&y,&s);
ans.push_back( make_pair(x,y) );
mp[x][y].siz=s;
}
scanf("%d%d",&x,&y);
// printf("%d %d\n",x,y);
while(!q.empty()) q.pop();
if(ok(x-1,y)) q.push(node(x-1,y,1));
if(ok(x+1,y)) q.push(node(x+1,y,2));
if(ok(x,y-1)) q.push(node(x,y-1,3));
if(ok(x,y+1)) q.push(node(x,y+1,4));
vec.clear();
for(time=1; time<=t; time++ )
{
// printf("*****%d\n",time);
for(int i=0; i<vec.size(); i++)
{
q.push(vec[i]);
}
vec.clear();
// printf("&&&%d\n",q.size());
while(!q.empty())
{
node index=q.front();
q.pop();
x=index.x;
y=index.y;
// printf("%d %d\n",x,y);
if(mp[x][y].siz!=0)
{
mp[x][y].siz++;
}
else
{
if(index.de==1&&ok(x-1,y)) vec.push_back(node(x-1,y,1));
if(index.de==2&&ok(x+1,y)) vec.push_back(node(x+1,y,2));
if(index.de==3&&ok(x,y-1)) vec.push_back(node(x,y-1,3));
if(index.de==4&&ok(x,y+1)) vec.push_back(node(x,y+1,4));
}
}
for(int i=0; i<n; i++)
{
x=ans[i].first;
y=ans[i].second;
if(mp[x][y].siz>4)
{
mp[x][y].siz=0;
mp[x][y].time=time;
if(ok(x-1,y)) vec.push_back(node(x-1,y,1));
if(ok(x+1,y)) vec.push_back(node(x+1,y,2));
if(ok(x,y-1)) vec.push_back(node(x,y-1,3));
if(ok(x,y+1)) vec.push_back(node(x,y+1,4));
}
}
}
for(int i=0; i<n; i++ )
{
if(mp[ans[i].first][ans[i].second].siz!=0)
{
printf("1 %d\n",mp[ans[i].first][ans[i].second].siz);
}
else
{
printf("0 %d\n",mp[ans[i].first][ans[i].second].time);
}
}
}
return 0;
}
2015 多校第四场 XYZ and Drops
最新推荐文章于 2019-08-08 22:25:00 发布