Kattis

Charged

Background

The electric field $\vec{E}$ of a particle with charge $q$ can be derived from its electric potential $V$:

$\vec{E} = -\nabla V$

where $\nabla$ is the derivative operator and $V$ at every point in space is

$V = {1\over 4\pi \varepsilon _0}{q\over ||\vec{r}||}$

where $\vec{r}$ is the distance from the particle at that point, $1\over 4\pi \varepsilon _0$ is some constant, and $||\vec{r}|| = \sqrt{r_ x^2 + r_ y^2}$ (in a two-dimensional plane). The net electric potential at any point is the sum of all of the electric potentials from all the particles.

The force from particle $B$ on particle $A$ is the charge of $A$ $(q_ A)$ multiplied by the electric field from $B$:

\begin{align*} \vec{F}_{B\rightarrow A} & = q_ A\vec{E}_ B\\ & = {1\over 4\pi \varepsilon _0}{q_ A\cdot q_ B\over ||\vec{r}||^2}\hat{r} \end{align*}

For this problem, however, you will only visualize the electric potential $V$.

Problem

Given two kinds of particles, those with a positive charge $+e$, and those with negative charges $-e$, display the electric potential at every point in space. The electric potential should be normalized relative to ${|e|\over 4\pi \varepsilon _0}$ (i.e., treat ${|e|\over 4\pi \varepsilon _0}$ as $1$).

Input

Input starts with $3$ integers $n,m,q$ where $0<n,m\le 50$ and $0<q\le 10$. Then follows $q$ lines: each line contains three values $x,y,s$, where $1 \leq x \leq m$ and $1 \leq y \leq n$ correspond to the integer coordinates of the charged particle and $s$ is the sign of the particle’s charge being either a + or a -. No two particles will have the same coordinates.

Output

Your output should be an $n\times m$ grid of ASCII characters oriented with the positive $y$-axis pointing down and the positive $x$-axis pointing to the right, with coordinates starting from $1$. Every character in the grid corresponds to the total potential at that point.

If the field contains a particle, print either a + or - corresponding to its charge. Otherwise, the character you place will be related to the sign of the potential. If the potential is negative then use the characters {%,X,x}. If it is positive, however, use the character set {0,O,o} (the first element is a zero).

There are $3$ tiers to the field’s magnitude:

1. $1 / \pi$

2. $1 / \pi ^2$

3. $1 / \pi ^3$

If the field is below the third tier print a “.”.

If the magnitude is above the first tier then you would use % or 0 (zero) depending on the sign, if it is below the first tier then you would use X or O, and so on and so forth.

Sample Input 1 Sample Output 1
20 20 2
5 5 +
15 15 -

OOOOOOOOOoooo.......
OOOOOOOOOoooo.......
OOO000OOOOooo.......
OO00000OOOooo.......
OO00+00OOOoo........
OO00000OOooo........
OOO000OOOoo....xxxxx
OOOOOOOOoo...xxxxxxx
OOOOOOOoo...xxxxxxxx
ooOOOooo...xxxXXXxxx
ooooooo...xxXXXXXXXx
oooooo...xxXXXXXXXXX
oooo....xxXXX%%%XXXX
.......xxxXX%%%%%XXX
.......xxXXX%%-%%XXX
......xxxXXX%%%%%XXX
......xxxXXXX%%%XXXX
......xxxxXXXXXXXXXX
......xxxxXXXXXXXXXX
......xxxxxXXXXXXXXx

Sample Input 2 Sample Output 2
20 20 3
15 15 -
10 10 +
5 5 -

XXXXXXXXXXxxxxxxxxxx
XXXXXXXXXXxxxxxxxxxx
XXX%%%XXXXxxxxxxxxxx
XX%%%%%XXXxxxxxxxxxx
XX%%-%%XXxxxxxxxxxxx
XX%%%%%Xxx..xxxxxxxx
XXX%%%Xx.oo..xxxxxxx
XXXXXXx.OOOo..xxxxxx
XXXXXx.O000Oo.xxxxxx
XXXXxxoO0+0OoxxXXXXX
xxxxx.oO000O.xXXXXXX
xxxxx..oOOO.xXXXXXXX
xxxxxx..oo.xX%%%XXXX
xxxxxxx..xxX%%%%%XXX
xxxxxxxxxxXX%%-%%XXX
xxxxxxxxxXXX%%%%%XXX
xxxxxxxxxXXXX%%%XXXX
xxxxxxxxxXXXXXXXXXXX
xxxxxxxxxXXXXXXXXXXX
xxxxxxxxxXXXXXXXXXXX

Sample Input 3 Sample Output 3
20 20 2
10 2 +
10 18 -

oooOOOO00000OOOOoooo
oooOOOO00+00OOOOoooo
oooOOOO00000OOOOoooo
ooooOOOO000OOOOooooo
oooooOOOOOOOOOoooooo
ooooooOOOOOOOoooooo.
.oooooooOOOooooooo..
....ooooooooooo.....
....................
....................
....................
....xxxxxxxxxxx.....
.xxxxxxxXXXxxxxxxx..
xxxxxxXXXXXXXxxxxxx.
xxxxxXXXXXXXXXxxxxxx
xxxxXXXX%%%XXXXxxxxx
xxxXXXX%%%%%XXXXxxxx
xxxXXXX%%-%%XXXXxxxx
xxxXXXX%%%%%XXXXxxxx
xxxXXXXX%%%XXXXXxxxx