Pagini recente »
Atașamentele paginii 2024-02-18-clasa-8-tema-18
|
Statistici Petre OMpirescu (sunt_grozav)
|
Diferențe pentru runda/2019-12-19-clasa-7-tema-15 între reviziile 1 și 2
|
Tzepu
|
Cod sursă (job #645061)
Cod sursă (job
#645061)
#include <fstream>
using namespace std;
ifstream cin("immortal.in");
ofstream cout("immortal.out");
const int nmax=20*20+3;
struct nem {
int x,y;
} v[nmax];
short v1[nmax][nmax];
bool f[nmax];
short dirx[]= {-1,0,0,1};
short diry[]= {0,-1,1,0};
int nemu=0;
int peste_cati(nem a) {
int sol=0;
for(int i=0; i<4; i++)
if(v1[a.x+dirx[i]][a.y+diry[i]])
if(v1[a.x+2*dirx[i]][a.y+2*diry[i]]==0)
sol++;
return sol;
}
void sari(nem &a,nem &b) {
//cout<<a.x<<" "<<b.x<<" "<<a.y<<" "<<b.y<<'\n';
nem nou_a,nou_b;
int sarituraA=-1,sarituraB=-1;
for(int i=0; i<4; i++) {
//cout<<a.x<<" "<<a.y<<" "<<b.x<<" "<<b.y<<'\n';
if((a.x+dirx[i]==b.x&&a.y+diry[i]==b.y))
if(v1[a.x+2*dirx[i]][a.y+2*diry[i]]==0) {
nou_a.x=a.x+2*dirx[i];
nou_a.y=a.y+2*diry[i];
sarituraA=peste_cati(nou_a);
}
if((b.x+dirx[i]==a.x&&b.y+diry[i]==a.y))
if(v1[b.x+2*dirx[i]][b.y+2*diry[i]]==0) {
nou_b.x=b.x+2*dirx[i];
nou_b.y=b.y+2*diry[i];
sarituraB=peste_cati(nou_b);
}
}
if(sarituraA!=-1||sarituraB!=-1)
if(sarituraA>=sarituraB) {
nemu++;
cout<<a.x<<" "<<a.y<<" ";
f[v1[b.x][b.y]]=1;
a.x=nou_a.x;
a.y=nou_a.y;
cout<<a.x<<" "<<a.y<<"\n";
} else {
nemu++;
cout<<b.x<<" "<<b.y<<" ";
f[v1[a.x][a.y]]=1;
b.x=nou_b.x;
b.y=nou_b.y;
cout<<b.x<<" "<<b.y<<"\n";
}
}
int main() {
int n,m,k,i,j;
nem x;
cin>>n>>m>>k;
for(i=1; i<=k; i++) {
cin>>v[i].x>>v[i].y;
v1[v[i].x][v[i].y]=i;
}
//for(i=1; i<=n; i++) {
//for(j=1; j<=m; j++)
//cout<<v1[i][j]<<" ";
//cout<<'\n';
//}
while(nemu<k-1){
//cout<<nemu;
for(i=1; i<=k; i++) {
for(j=1; j<=k; j++) {
if(i!=j&&f[i]==0&&f[j]==0) {
//cout<<i<<" "<<j<<'\n';
sari(v[i],v[j]);
}
}
}
}
return 0;
}