Cod:
#include <fstream>
using namespace std;
typedef struct{int x,y;} PUNCT;
PUNCT v[51],w[41];
int m[203][203],c[203][203];
int main()
{
ifstream f("iepuras.in");
ofstream g("iepuras.out");
int N,M,i,j,u,pasi,mv,ss,p1,p2,t,mvc,OK,OK2;
f>>N; f>>M;
f>>p1; f>>p2; f>>ss; mv=0;
for(i=1;i<=N;i++)
{ for(j=1;j<=M;j++)
{ f>>m[i][j];
if(m[i][j]==8) {v[++u].x=i; v[u].y=j;}
if(m[i][j]==7) mv++;
}
}
f>>t; mvc=0;
for(i=1;i<=t;i++)
{ f>>w[i].x; f>>w[i].y;}
OK=1; OK2=1;
pasi=0;
while(p1>=1&&p1<=N&&p2>=1&&p2<=M)
{ if(ss==1) {p1--;}
if(ss==2) {p2--;}
if(ss==3) {p1++;}
if(ss==4) {p2++;}
if(p1==0||p1==N+1||p2==0||p2==M+1)
{
if(p1==0) p1++;
if(p1==N+1) p1--;
if(p2==0) p2++;
if(p2==M+1) p2--;
OK=3; break;
}
pasi++;
if(m[p1][p2]==6) {OK=1; break;}
if(m[p1][p2]==7) { mvc++; m[p1][p2]=0; if(mvc==mv) {OK=2; break;}
}
if(m[p1][p2]==8) { if(ss==1) ss=3;
if(ss==2) ss=4;
if(ss==3) ss=1;
if(ss==4) ss=2;
}
if(m[p1][p2]==5) { if(ss==1) ss=3;
if(ss==2) ss=4;
if(ss==3) ss=1;
if(ss==4) ss=2;
}
if(m[p1][p2]==4) {ss=4; m[p1][p2]=0;}
if(m[p1][p2]==3) {ss=3; m[p1][p2]=0;}
if(m[p1][p2]==2) {ss=2; m[p1][p2]=0;}
if(m[p1][p2]==1) {ss=1; m[p1][p2]=0;}
if(m[p1][p2]==9)
{ if(OK2%2==1)
{
for(j=1;j<=u;j++)
{ m[v[j].x][v[j].y]=0; }
for(j=1;j<=t;j++)
{ m[w[j].x][w[j].y]=8; }
}
else
{
for(j=1;j<=t;j++)
{ m[w[j].x][w[j].y]=0; }
for(j=1;j<=u;j++)
{ m[v[j].x][v[j].y]=8; }
}
OK2++;
}
if(p1>0&&p2>0)
{
if(m[p1-1][p2]==6)
{ if(c[p1-1][p2]==1) {OK=1; break;}
else c[p1-1][p2]=1;
}
if(m[p1+1][p2]==6)
{ if(c[p1+1][p2]==1) {OK=1; break;}
else c[p1+1][p2]=1;
}
if(m[p1][p2-1]==6)
{ if(c[p1][p2-1]==1) {OK=1; break;}
else c[p1][p2-1]=1;
}
if(m[p1][p2+1]==6)
{ if(c[p1][p2+1]==1) {OK=1; break;}
else c[p1][p2+1]=1;
}
}
}
if(OK==1) g<<"INGERAS"<<"\n"<<p1<<" "<<p2<<"\n"<<mvc<<" "<<pasi;
if(OK==2) g<<"FERICIT"<<"\n"<<p1<<" "<<p2<<"\n"<<mvc<<" "<<pasi;
if(OK==3) g<<"RATACIT"<<"\n"<<p1<<" "<<p2<<"\n"<<mvc<<" "<<pasi;
f.close();
g.close();
return 0;
}
Sunt incepator, si chiar nu inteleg ce ar putea sa aiba. Multumesc pentru ajutor.
