Cod sursă (job #293091)

Utilizator avatar micutu Andrei Vasile Cont Fraudulent micutu IP ascuns
Problemă Immortal (clasele 9-10) Compilator cpp | 1.19 kb
Rundă Arhiva de probleme Status evaluat
Dată 13 mar. 2017 10:53:14 Scor 0
#include<fstream>
using namespace std;
ifstream f("immortal.in");
ofstream g("immortal.out");
int i,j,p,q,pp,u,x,y,n,k,m,nr;
int l[401],c[401],a[22][22],b[22][22];
int r[402],s[402];
int main()
{
	f>>n>>m>>k;
	for(i=1;i<=k;i++)
		{f>>l[i]>>c[i];
	a[l[i]][c[i]]=1;
		}
	i=i;	
for(i=k;i>=1;i--)
	{
		p=1;
		u=1;
		nr=0;
		pp=0;
		r[1]=l[i];
	s[1]=c[i];
		for(j=1;j<=n;j++)
		for(q=1;q<=m;q++)
		b[j][q]=a[j][q];
			while(p<=u)
			{	
				nr=0;
			x=r[p];
			y=s[p];
			if(b[x-1][y]&&(x-2>0)&&b[x-2][y]==0)
				{
					b[x-1][y]=0;
						nr++;
						u++;
					r[u]=x-2;
					s[u]=y;
				}
					if(b[x+1][y]&&(x+2<=n)&&b[x+2][y]==0)
				{
				b[x+1][y]=0;
				nr++;
				u++;
				r[u]=x+2;
				s[u]=y;
				}
		
					if(b[x][y-1]&&(y-2>0)&&b[x][y-2]==0)
				{
	b[x][y-1]=0;
	nr++;
	u++;
	r[u]=x;
	s[u]=y-2;
				}	
			
if(b[x][y+1]&&(y+2<=m)&&b[x][y+2]==0)
			{
	b[x][y+1]=0;
	nr++;
	u++;
	r[u]=x;
	s[u]=y+2;
				}	
p++;
if(nr)
	pp++;
if(pp==k-1)
	break;
			
			};
	if(pp+1==k)
		break;
}
if(pp+1==k)
for(n=1;n<u;n++)
	{
		g<<r[j]<<" "<<s[j]<<" ";
		g<<r[j+1]<<" "<<s[j+1]<<" ";
		g<<'\n';
	
	
	}
f.close();
g.close();
return 0;
}