Pagini recente »
Monitorul de evaluare
|
Cod sursă (job #118779)
|
Monitorul de evaluare
|
Borderou de evaluare (job #540147)
|
Cod sursă (job #319775)
Cod sursă (job
#319775)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("immortal.in");
ofstream g("immortal.out");
int a[101][101],n,i,j,m,nem,ok,numar;
struct r{
int l,c,l1,c1,l2,c2,s;
}v[101],v1[101];
bool cmp(r a,r b)
{
return (a.s>=b.s);
}
void back1(int x,int y)
{
int ver=1;
if(a[x-2][y]==-1)
a[x-2][y]=2;
if(a[x+2][y]==-1)
a[x+2][y]=2;
if(a[x][y-2]==-1)
a[x][y-2]=2;
if(a[x][y+2]==-1)
a[x][y+2]=2;
int ok=2;
while(ok!=0)
{
ok++;
if(ver==0)
break;
else
ver=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j]==2)
{
if(a[i-2][j]==-1)
{
a[i-2][j]=ok;
ver=1;
}
if(a[i+2][j]==-1)
{
ver=1;
a[i+2][j]=ok;
}
if(a[i][j-2]==-1)
{
a[i][j-2]=ok;
ver=1;
}
if(a[i][j+2]==-1)
{
a[i][j+2]=ok;
ver=1;
}
}
}
}
}
}
int main ()
{
f>>n>>m>>nem;
for(i=1;i<=nem;i++)
{
f>>v[i].l>>v[i].c;
}
ok=0;
while(ok<nem)
{
ok++;
numar=0;
int o=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
a[i][j]=-1;
}
}
for(i=1;i<=nem;i++)
{
a[v[i].l][v[i].c]=1;
}
back1(v[ok].l,v[ok].c);
a[v[ok].l][v[ok].c]=-3;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j]==1)
{
if((a[i-1][j]>0||a[i-1][j]==-3)&&(a[i+1][j]>0||a[i+1][j]==-3))
{
v1[++o].l1=i-1;
v1[o].c1=j;
v1[o].l2=i+1;
v1[o].c2=j;
a[i][j]=0;
numar++;
}
else
if((a[i][j-1]>0||a[i][j-1]==-3)&&(a[i][j+1]>0||a[i][j+1]==-3))
{
v1[++o].l1=i;
v1[o].c1=j-1;
v1[o].l2=i;
v1[o].c2=j+1;
a[i][j]=0;
numar++;
}
}
}
}
if(numar==nem-1)
{
for(int w=1;w<=o;w++)
{
g<<v1[w].l1<<" "<<v1[w].c1<<" "<<v1[w].l2<<" "<<v1[w].c2;
g<<endl;
}
}
}
return 0;
}