Cod sursa(job #587274)

Utilizator costyv87Vlad Costin costyv87 Data 4 mai 2011 15:54:48
Problema Dame Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <cstdio>
#include <vector>
using namespace std;
FILE *f,*g;
bool a[1010][1010];
bool b[1010][1010];
int l[1010],c[1010];
struct cp{int x,y;}aux ;
vector <cp> cod;
vector <cp> cod2;
int i,j,n,con,con2;

void vf(int i,int j) {
int x,y;

for (x=i,y=j;x<=n && y<=n;x++,y++) 
	a[x][y]=true;
for (x=i,y=j;x>=1 && y<=n;x--,y++) 
	a[x][y]=true;
for (x=i,y=j;x>=1 && y>=1;x--,y--) 
	a[x][y]=true;
for (x=i,y=j;x<=n && y>=1;x++,y--) 
	a[x][y]=true;

}

int main() {
f=fopen("dame.in","r");
g=fopen("dame.out","w");

fscanf(f,"%d",&n);
con=0;


for (i=n-1+(n%2),j=1;j<=n/2+n%2;j++,i-=2,con++) {
	vf(i,j);
	l[i]=1;
	c[j]=1;
	aux.x=i;
	aux.y=j;
	cod.push_back(aux);
	cod2.push_back(aux);
	}
	


if (l[n]==1) 
	i=n-1;
else 
	i=n;

int q;
int c1,c2;

for (c1=1;c1<=n;c1++)
	for (c2=1;c2<=n;c2++)
		b[c1][c2]=a[c1][c2];

con2=con;

for (;i>=1;i-=2) {
	for (q=j;q<=n;q++) {
		if (c[q]==0 && a[i][q]==false)  {
			aux.x=i;
			aux.y=q;
			cod.push_back(aux);
			vf(i,q);
			c[q]=1;
			con++;
			break;
			}
		}
	}


for (q=j;q<=n;q++)
	c[q]=0;


if (l[1]==1) 
	i=2;
else 
	i=1;

for (c1=1;c1<=n;c1++)
	for (c2=1;c2<=n;c2++)
		a[c1][c2]=b[c1][c2];

for (;i<=n;i+=2) {
	for (q=j;q<=n;q++) {
		if (c[q]==0 && a[i][q]==false)  {
			aux.x=i;
			aux.y=q;
			cod2.push_back(aux);
			vf(i,q);
			c[q]=1;
			con2++;
			break;
			}
		}
	}


if (con>=con2) {
fprintf(g,"%d\n",con);
for (i=0;i<cod.size();i++)
	fprintf(g,"%d %d\n",cod[i].x,cod[i].y);
}

fclose(g);
return 0;

}