답안 #18711

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
18711 2016-02-14T11:41:41 Z pichulia 여왕벌 (KOI15_queen) C++
68 / 100
5000 ms 17884 KB
#include<stdio.h>
#include<algorithm>
using namespace std;
int m, n;
char a[701][701][3][3][3];
int r[701][701];
int rr[701][701];
char x[999];
int p[709];
int q[709];
void process()
{
	int i0, i1, i2;
	int i, j, k, l;
	scanf("%d %d %d", &i0, &i1, &i2);
	// p = start of 1, q = start of 2
	if (i0 + i1 < n)
	{
		p[0] = 0; q[0] = 0;
	}
	else if (i0 < n)
	{
		p[0] = 0; q[0] = n - i2;
	}
	else
	{
		p[0] = i0 - n + 1; q[0] = n - i2;
	}
	for (i = 1; i < n; i++)
	{
		int np, nq;
		np = p[i - 1];
		nq = q[i - 1];
		int si = 0;
		if (i0 + i1 < (n - i))si = 2;
		else if (i0 < (n - i)) si = 1;
		else si = 0;

		if (si == 0)
		{
			if (p[i - 1]> 0) // 0 0 0 x x x
			{
				if (p[i - 1] != q[i - 1]) // 0 0 0 1 1 1 2 2 2
				{
					for (j = p[i - 1]; j < n && j < q[i - 1]; j++)
					{
						if (j == p[i-1] && a[i][j][0][0][1] == 1)
							break;
						else if (j > p[i - 1] && a[i][j][0][1][1] == 1)
							break;
					}
					if (j < q[i - 1])
					{
						np = j;
						for (j = q[i - 1]; j < n; j++)
						{
							if (j == q[i-1] && a[i][j][1][1][2] == 2)
								break;
							else if (j > q[i - 1] && a[i][j][1][2][2] == 2)
								break;
						}
						nq = j;
					}
					else
					{
						// 0 0 1 1 2 2
						// 0 0 0 0 ?
						if (j < n && a[i][j][0][1][2] == 1)
						{
							np = j;
							for (j = q[i - 1]+1; j < n; j++)
							{
								if (a[i][j][1][2][2] == 2)
									break;
							}
							nq = j;
						}
						else
						{
							for (j = q[i - 1]; j < n; j++)
							{
								if (j == q[i - 1] && a[i][j][0][1][2] == 2)
									break;
								else if (j > q[i - 1] && a[i][j][0][2][2] == 2)
									break;
							}
							nq = j;
							np = nq;
						}
					}
				}
				else // 0 0 0 2 2 2
				{

					for (j = q[i - 1]; j < n; j++)
					{
						if (j == q[i - 1] && a[i][j][0][0][2] == 2)
							break;
						else if (j > q[i - 1] && a[i][j][0][2][2] == 2)
							break;
					}
					nq = j;
					np = nq;
				}
			}
			else if (q[i - 1] > 0) // 1 1 1 x x x
			{
				for (j = 1; j < n && j < q[i - 1]; j++)
				{
					if (a[i][j][0][1][1] == 1)
						break;
				}
				if (j < q[i - 1])
				{
					np = j;
					for (j = q[i - 1]; j < n; j++)
					{
						if (j == q[i - 1] && a[i][j][1][1][2] == 2)
							break;
						else if (j > q[i - 1] && a[i][j][1][2][2] == 2)
							break;
					}
					nq = j;
				}
				else
				{
					if (j < n && a[i][j][0][1][2] == 1)
					{
						np = j;
						for (j = q[i - 1] + 1; j < n; j++)
						{
							if (a[i][j][1][2][2] == 2)
								break;
						}
						nq = j;
					}
					else
					{
						for (j = q[i - 1]; j < n; j++)
						{
							if (j == q[i - 1] && a[i][j][0][1][2] == 2)
								break;
							else if (j > q[i - 1] && a[i][j][0][2][2] == 2)
								break;
						}
						nq = j;
						np = nq;
					}
				}
			}
			else // 2 2 2 ... 
			{
				for (j = 1; j < n; j++)
					if (a[i][j][0][2][2] == 2)
						break;
				nq = j;
				np = nq;
			}
		} // end of si == 0
		else if (si == 1)
		{
			np = 0;
			if (q[i - 1] > 0) // 1 1 1 x x x
			{
				for (j = q[i - 1]; j < n; j++)
				{
					if (j == q[i - 1] && a[i][j][1][1][2] == 2)
						break;
					else if (j > q[i - 1] && a[i][j][1][2][2] == 2)
						break;
				}
				nq = j;
			}
			else // 2 2 2 x x x
			{
				for (j = 1; j < n; j++)
					if (a[i][j][1][2][2] == 2)
						break;
				nq = j;
			}
		} // end of si == 1
		else
		{
			np = nq = 0;
		} // end of si == 2
		p[i] = np;
		q[i] = nq;
	}
	r[0][p[0]]++;
	r[0][q[0]]++;
	for (i = 1; i < n; i++)
	{
		//	printf("%d %d\n", p[i], q[i]);
		r[i][p[i-1]]--;
		r[i][q[i-1]]--;
		r[i][p[i]]++;
		r[i][q[i]]++;
	}
}
int main()
{
	scanf("%d %d", &n, &m);
	int i, j, k;
	for (i = 1; i < n; i++)
		for (j = 1; j < n; j++)
		{
			scanf("%s", x);
			k = 0;
			for (char ii = 0; ii < 3; ii++)
				for (char jj = 0; jj < 3; jj++)
					for (char kk = 0; kk < 3; kk++)
					{
						char cc = x[k++];
						if (cc == 'L')
						{
							cc = ii;
						}
						else if (cc == 'D')
						{
							cc = jj;
						}
						else
						{
							cc = kk;
						}
						a[i][j][ii][jj][kk] = cc;
					}
		}
	{
		while (m--)
		{
			process();
		}
		for (j = 0; j < n; j++)
		{
			k = 0;
			for (i = 0; i < n; i++)
			{
				k += r[i][j];
				rr[i][j] = k;
			}
		}
		for (i = 0; i < n; i++)
		{
			k = 1;
			for (j = 0; j < n; j++)
			{
				k += rr[i][j];
				printf("%d ", k);
			}
			printf("\n");
		}
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 17884 KB Output is correct
2 Correct 0 ms 17884 KB Output is correct
3 Correct 4 ms 17884 KB Output is correct
4 Correct 0 ms 17884 KB Output is correct
5 Correct 39 ms 17884 KB Output is correct
6 Correct 33 ms 17884 KB Output is correct
7 Correct 22 ms 17884 KB Output is correct
8 Correct 109 ms 17884 KB Output is correct
9 Correct 102 ms 17884 KB Output is correct
10 Correct 209 ms 17884 KB Output is correct
11 Correct 224 ms 17884 KB Output is correct
12 Correct 239 ms 17884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 17884 KB Output is correct
2 Correct 81 ms 17884 KB Output is correct
3 Correct 133 ms 17884 KB Output is correct
4 Correct 458 ms 17884 KB Output is correct
5 Correct 383 ms 17884 KB Output is correct
6 Correct 413 ms 17884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 17884 KB Output is correct
2 Correct 30 ms 17884 KB Output is correct
3 Correct 282 ms 17884 KB Output is correct
4 Correct 607 ms 17884 KB Output is correct
5 Correct 496 ms 17884 KB Output is correct
6 Correct 535 ms 17884 KB Output is correct
7 Correct 372 ms 17884 KB Output is correct
8 Correct 341 ms 17884 KB Output is correct
9 Correct 363 ms 17884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5000 ms 17880 KB Program timed out
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 17884 KB Output is correct
2 Correct 0 ms 17884 KB Output is correct
3 Correct 0 ms 17884 KB Output is correct
4 Correct 0 ms 17884 KB Output is correct
5 Correct 279 ms 17884 KB Output is correct
6 Correct 309 ms 17884 KB Output is correct
7 Correct 301 ms 17884 KB Output is correct
8 Correct 307 ms 17884 KB Output is correct
9 Execution timed out 5000 ms 17880 KB Program timed out
10 Halted 0 ms 0 KB -