Cod sursă (job #670934)

Utilizator avatar Vladgiusca vladgiusca Vladgiusca IP ascuns
Problemă Immortal (clasele 9-10) Compilator cpp-32 | 1,92 kb
Rundă Tema BKT Status evaluat
Dată 20 oct. 2022 18:41:04 Scor 50
#include <bits/stdc++.h>
using namespace std;
ifstream in("immortal.in");
ofstream out("immortal.out");
int di[]={0,1,0,-1};
int dj[]={1,0,-1,0};
const int NMAX=25;
bool M[NMAX][NMAX];
struct nemuritor{int i;int j;}N[NMAX];
struct lupta{int i1;int j1;int i2;int j2;}V[NMAX];
int n,m,I;
int cnt;
bool gasit;
bool in_matrice(int i, int j){
    return (i>0 && j>0 && i<=n && j<=m);
}
void afisare(){
    gasit=1;
    for(int i=1; i<I; i++)
        out<<V[i].i1<<" "<<V[i].j1<<" "<<V[i].i2<<" "<<V[i].j2<<'\n';
}
void gnikcartkcab(int k){
    int i,j,ni,nj,nni,nnj;
    if(!gasit){
        for(int ii=1; ii<=I; ii++){
            i=N[ii].i;
            j=N[ii].j;
            if(M[i][j]==1){
                for(int kk=0; kk<4; kk++){
                    ni=i+di[kk];
                    nj=j+dj[kk];
                    nni=ni+di[kk];
                    nnj=nj+dj[kk];
                    if(in_matrice(nni,nnj) && M[ni][nj]==1 && M[nni][nnj]==0){
                        V[k].i1=i;
                        V[k].j1=j;
                        V[k].i2=nni;
                        V[k].j2=nnj;
                        M[ni][nj]=0;
                        M[nni][nnj]=1;
                        M[i][j]=0;
                        N[ii].i=nni;
                        N[ii].j=nnj;
                        cnt--;
                        if(cnt==1 && !gasit)
                            afisare();
                        else if(!gasit)
                            gnikcartkcab(k+1);
                        M[ni][nj]=1;
                        M[nni][nnj]=0;
                        M[i][j]=1;
                        N[ii].i=i;
                        N[ii].j=j;
                        cnt++;
    }}}}}
}
int main()
{
    int i,x,y;
    in>>n>>m>>I;
    cnt=I;
    for(i=1; i<=I; i++){
        in>>x>>y;
        M[x][y]=1;
        N[i].i=x;
        N[i].j=y;
    }
    gnikcartkcab(1);
    return 0;
}