Pagini recente »
Istoria paginii runda/vaslui_cls10_23.03
|
Cod sursă (job #485828)
|
Rating Mitrasca Andrei Cosmin (DeXTeR)
|
Cod sursă (job #466021)
|
Cod sursă (job #319736)
Cod sursă (job
#319736)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f ("immortal.in");
ofstream g ("immortal.out");
int n, m, I, i, a[50][50], u[50][50], j, b[50][5], nr, x, y, ok;
short dx[]={-1, 0, 1, 0}, dy[]={0, 1, 0, -1};
void tipar (int u[50][50])
{
for (int i=1; i<=n; i++){
for (int j=1; j<=m; j++) g << u[i][j] << " ";
g << '\n';
}
g << '\n';
g << "da"<< '\n';
for (int i=1; i<=I; i++){
for (int j=1; j<=4; j++) g << b[i][j] << " ";
g << '\n';
}
g << '\n';
}
void back(int i, int j)
{
if (!ok){
nr++;
b[nr][1]=i; b[nr][2]=j;
// tipar(u);
for (int k=0; k<4; k++){
int lv=i+dx[k];
int cv=j+dy[k];
if (lv>0 && lv<=n && cv>0 && cv<=m){
// g << "daaaaaaaa" << '\n';
if (u[lv][cv]==1 && u[lv+dx[k]][cv+dy[k]]==0){
u[i][j]=0; u[lv][cv]=0; u[lv+dx[k]][cv+dy[k]]=1;
b[nr][3]=lv+dx[k]; b[nr][4]=cv+dy[k];
// tipar(u);
if (nr==I-1){
for (int i=1; i<=nr; i++){
for (int j=1; j<=4; j++) g << b[i][j] << " ";
g << '\n';
}
g << '\n';
ok=1; return;
}
else back(lv+dx[k], cv+dy[k]);
u[i][j]=1; u[lv][cv]=1; u[lv+dx[k]][cv+dy[k]]=0;
}
}
}
nr--;
}
}
int main ()
{
f >> n >> m >> I;
for (i=1; i<=I; i++){
f >> x >> y;
a[x][y]=u[x][y]=1;
}
// tipar(u);
for (i=1; i<=n; i++){
if (!ok){
for (j=1; j<=m; j++){
if (!ok){
if (a[i][j]){
if (a[i][j-1]==1 || a[i][j+1]==1 || a[i-1][j]==1 || a[i+1][j]==1){
// g << i << "=i j=" << j << '\n';
memset(b, 0, sizeof(b));
back(i, j);
// g << '\n';
}
}
}
}
}
}
}