Cod sursa(job #84947)

Utilizator adiAdrian Diaconu adi Data 18 septembrie 2007 20:21:30
Problema Critice Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
#include <vector>
#include <cmath>

using namespace std;

#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define mp make_pair
#define sz size()
#define pb push_back
#define f first
#define s second

int n,m;
char A[64][64];
vector < pair <int,int> > P;

void doit(int i,int j)
{
    if(i<0||j<0||i>=n||j>=m)
	return;
    A[i][j]=A[i][j]=='W'?'B':'W';
}

int main()
{
    int i,j,k;
    P.clear();
    scanf("%d %d",&n,&m);
    FOR(i,-n,n+1) FOR(j,-m,m+1)
	FOR(k,0,100)
	{
	    if(k*k==i*i+j*j)
		P.pb(mp(i,j));
	}
    FOR(i,0,n)
	scanf("%s",A[i]);
    FOR(i,0,n) FOR(j,0,m)
    {
	scanf("%d",&k);
	if(k&1)
	    FOR(k,0,P.sz)
		doit(i+P[k].f,j+P[k].s);
    }
    FOR(i,0,n) 
	printf("%s\n",A[i]);
    return 0;
}