View Code of Problem 3603

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int d[105][105];
int fd[105][105];//  来保存水滴的运动趋势    0为静止 1 向上  2 向下   3 向左 4 向右
int ff[105][105];//爆炸的时间
int data1[105];
int data2[105];


   int r,c,n,t;
        int x,y;
      int time;


void solve ()
{
int i;
int j;
for(i=1;i<=r;i++)
{
    for(j=1;j<=c;j++ )
    {
    if(fd[i][j]==1)
    {
    d[i][j]-=1;
    fd[i][j]=0;
    if(d[i-1][j]==4)
    {
       fd[i-1][j]=5;
       ff[i-1][j]=time;
    }
    else if(d[i-1][j]>0)
        fd[i-1][j]=0;
    else
        fd[i-1][j]=1;
    d[i-1][j]+=1;
    continue;
    }
        if(fd[i][j]==2)
    {
    d[i][j]-=1;
    fd[i][j]=0;
    if(d[i+1][j]==4)
    {
       fd[i+1][j]=5;
       ff[i+1][j]=time;
    }
    else if(d[i+1][j]>0)
        fd[i+1][j]=0;
    else
        fd[i+1][j]=2;
    d[i+1][j]+=1;
    continue;
    }

        if(fd[i][j]==3)
    {
    d[i][j]-=1;
    fd[i][j]=0;
    if(d[i][j-1]==4)
    {
       fd[i][j-1]=5;
       ff[i][j-1]=time;
    }
    else if(d[i][j-1]>0)
        fd[i][j-1]=0;
    else
        fd[i][j-1]=3;
    d[i][j-1]+=1;
    continue;
    }
            if(fd[i][j]==4)
    {
    d[i][j]-=1;
    fd[i][j]=0;
       if(d[i][j+1]==4)
       {
       fd[i][j+1]=5;
        ff[i][j+1]=time;
       }
    else if(d[i][j+1]>0)
        fd[i][j+1]=0;
    else
        fd[i][j+1]=4;
    d[i][j+1]+=1;
    continue;
    }
            if(fd[i][j]==5)
    {
    d[i][j]=0;
    fd[i][j]=0;

     if(d[i-1][j]==4)
     {ff[i-1][j]=time;
       fd[i-1][j]=5;
     }
    else if(d[i-1][j]>0)
        fd[i-1][j]=0;
    else
        fd[i-1][j]=1;
    d[i-1][j]+=1;


    if(d[i+1][j]==4)
    {ff[i+1][j]=time;
       fd[i+1][j]=5;
    }
    else if(d[i+1][j]>0)
        fd[i+1][j]=0;
    else
        fd[i+1][j]=2;
    d[i+1][j]+=1;

     if(d[i][j-1]==4)
     {ff[i][j-1]=time;
       fd[i][j-1]=5;
     }
    else if(d[i][j-1]>0)
        fd[i][j-1]=0;
    else
        fd[i][j-1]=3;
    d[i][j-1]+=1;


      if(d[i][j+1]==4)
      {ff[i][j+1]=time;
       fd[i][j+1]=5;
      }
    else if(d[i][j+1]>0)
        fd[i][j+1]=0;
    else
        fd[i][j+1]=4;
    d[i][j+1]+=1;



    continue;
    }


    }


}



return ;
}

void fx()
{


for(time=1;time<=t;time++)
{
solve();

}

return;

}



int main ()
{

while(scanf("%d%d%d%d",&r,&c,&n,&t)!=EOF)
{
   int i;

  int s;
   memset(d,0,sizeof(d));
   memset(fd,0,sizeof(fd));
   memset(ff,0,sizeof(ff));

   for(i=1;i<=n;i++)
   {
   scanf("%d%d%d",&data1[i],&data2[i],&s);
   d[data1[i]][data2[i]]=s;
   }

   scanf("%d%d",&x,&y);
   d[x][y]=5;
   fd[x][y]=5;


   fx();

   for(i=1;i<=n;i++)
   {
   if(ff[data1[i]][data2[i]]>0)
   printf("0 %d\n",ff[data1[i]][data2[i]]);
   else
   printf("1 %d\n",d[data1[i]][data2[i]]);
   }


}

return 0;

}

Double click to view unformatted code.


Back to problem 3603