시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB1033100.000%

문제

아스키 아트란, 아스키 코드에 포함되는 문자, 기호를 사용한 그림을 말한다. 이 문제에서는 이를 좀 더 단순화한 경우를 생각해 보기로 한다.

직사각형 형태의 격자가 있다. 왼쪽 아래 꼭짓점의 좌표는 (0, 0)이고, 오른쪽 위 꼭짓점의 좌표는 (w, h)이다. 각 픽셀이란 (x, y) - (x+1, y+1) 로 이루어지는 한 변의 길이가 1인 정사각형을 말한다. (물론 여기서 0 ≤ x < w , 0 ≤ y < h이다.)

이러한 직사각형 격자 위에 다각형이 그려져 있다. 볼록 다각형은 아니지만, 자기 자신과 교차하거나 만나지 않는 단순 다각형이다. 이러한 다각형을 그리면 각 픽셀은 적절한 부분만 다각형 내부에 포함되게 된다. 예를 들어 아래 그림을 보자.

이제 우리는 각 픽셀을 하나의 아스키 코드 문자로 표현할 것이다. 단순히, 다각형 내부에 포함되어 있는 부분의 비율로만 판단하여, 다음과 같이 각각의 아스키 코드로 표현하기로 한다.

  • 0%이상 25%미만 . (아스키 코드 번호 46)
  • 25%이상 50%미만 + (아스키 코드 번호 43)
  • 50%이상 75%미만 o (아스키 코드 번호 111)
  • 75%이상 100%미만 \$ (아스키 코드 번호 36)
  • 100% # (아스키 코드 번호 35)

문제에서 주어진 규칙에 따라 다각형의 아스키 아트를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n, w, h가 빈 칸을 사이에 두고 주어진다. n은 다각형의 꼭짓점의 개수이며 w와 h는 격자의 폭과 높이이다. 이어서 n개의 줄에는 다각형을 이루는 꼭짓점이 시계방향으로 주어진다. 정수 좌표 xi와 yi로 주어진다. (0 ≤ xi ≤ w, 0 ≤ yi ≤ h) 주어지는 n, w, h는 모두 100 이하의 자연수이다.

출력

h개 줄에 걸쳐 아스키 아트를 표현하는 w개의 문자를 출력한다.

예제 입력 1

6 8 7
7 6
1 0
1 7
5 5
2 4
2 3

예제 출력 1

.$+.....
.##$+...
.#$oo+..
.#+$o...
.##o....
.#o.....
.o......
W3sicHJvYmxlbV9pZCI6IjE1OTciLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWM1NDRcdWMyYTRcdWQwYTQgXHVjNTQ0XHVkMmI4IiwiZGVzY3JpcHRpb24iOiI8cD5cdWM1NDRcdWMyYTRcdWQwYTQgXHVjNTQ0XHVkMmI4XHViNzgwLCBcdWM1NDRcdWMyYTRcdWQwYTQgXHVjZjU0XHViNGRjXHVjNWQwIFx1ZDNlY1x1ZDU2OFx1YjQxOFx1YjI5NCBcdWJiMzhcdWM3OTAsIFx1YWUzMFx1ZDYzOFx1Yjk3YyBcdWMwYWNcdWM2YTlcdWQ1NWMgXHVhZGY4XHViOWJjXHVjNzQ0IFx1YjlkMFx1ZDU1Y1x1YjJlNC4gXHVjNzc0IFx1YmIzOFx1YzgxY1x1YzVkMFx1YzExY1x1YjI5NCBcdWM3NzRcdWI5N2MgXHVjODgwIFx1YjM1NCBcdWIyZThcdWMyMWNcdWQ2NTRcdWQ1NWMgXHVhY2JkXHVjNmIwXHViOTdjIFx1YzBkZFx1YWMwMVx1ZDU3NCBcdWJjZjRcdWFlMzBcdWI4NWMgXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM5YzFcdWMwYWNcdWFjMDFcdWQ2MTUgXHVkNjE1XHVkMGRjXHVjNzU4IFx1YWNhOVx1Yzc5MFx1YWMwMCBcdWM3ODhcdWIyZTQuIFx1YzY3Y1x1Y2FiZCBcdWM1NDRcdWI3OTggXHVhZjJkXHVjOWQzXHVjODEwXHVjNzU4IFx1Yzg4Y1x1ZDQ1Y1x1YjI5NCAoMCwgMClcdWM3NzRcdWFjZTAsIFx1YzYyNFx1Yjk3OFx1Y2FiZCBcdWM3MDQgXHVhZjJkXHVjOWQzXHVjODEwXHVjNzU4IFx1Yzg4Y1x1ZDQ1Y1x1YjI5NCAodywgaClcdWM3NzRcdWIyZTQuIFx1YWMwMSBcdWQ1M2RcdWMxNDBcdWM3NzRcdWI3ODAgKHgsIHkpIC0gKHgrMSwgeSsxKSBcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWMwXHViMjk0IFx1ZDU1YyBcdWJjYzBcdWM3NTggXHVhZTM4XHVjNzc0XHVhYzAwIDFcdWM3NzggXHVjODE1XHVjMGFjXHVhYzAxXHVkNjE1XHVjNzQ0IFx1YjlkMFx1ZDU1Y1x1YjJlNC4gKFx1YmIzY1x1Yjg2MCBcdWM1ZWNcdWFlMzBcdWMxMWMgMCAmbGU7IHggJmx0OyB3ICwgMCAmbGU7IHkgJmx0OyBoXHVjNzc0XHViMmU0Lik8XC9wPlxyXG5cclxuPHA+XHVjNzc0XHViN2VjXHVkNTVjIFx1YzljMVx1YzBhY1x1YWMwMVx1ZDYxNSBcdWFjYTlcdWM3OTAgXHVjNzA0XHVjNWQwIFx1YjJlNFx1YWMwMVx1ZDYxNVx1Yzc3NCBcdWFkZjhcdWI4MjRcdWM4MzggXHVjNzg4XHViMmU0LiBcdWJjZmNcdWI4NWQgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzQwIFx1YzU0NFx1YjJjOFx1YzljMFx1YjljYywgXHVjNzkwXHVhZTMwIFx1Yzc5MFx1YzJlMFx1YWNmYyBcdWFkNTBcdWNjMjhcdWQ1NThcdWFjNzBcdWIwOTggXHViOWNjXHViMDk4XHVjOWMwIFx1YzU0YVx1YjI5NCBcdWIyZThcdWMyMWMgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzc0XHViMmU0LiBcdWM3NzRcdWI3ZWNcdWQ1NWMgXHViMmU0XHVhYzAxXHVkNjE1XHVjNzQ0IFx1YWRmOFx1YjlhY1x1YmE3NCBcdWFjMDEgXHVkNTNkXHVjMTQwXHVjNzQwIFx1YzgwMVx1YzgwOFx1ZDU1YyBcdWJkODBcdWJkODRcdWI5Y2MgXHViMmU0XHVhYzAxXHVkNjE1IFx1YjBiNFx1YmQ4MFx1YzVkMCBcdWQzZWNcdWQ1NjhcdWI0MThcdWFjOGMgXHViNDFjXHViMmU0LiBcdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0IFx1YzU0NFx1Yjc5OCBcdWFkZjhcdWI5YmNcdWM3NDQgXHViY2Y0XHVjNzkwLjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC8yMDEwMDRcL2FzY2lpLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjIxNXB4OyB3aWR0aDoyMzZweFwiIFwvPjxcL3A+XHJcblxyXG48cD5cdWM3NzRcdWM4MWMgXHVjNmIwXHViOWFjXHViMjk0IFx1YWMwMSBcdWQ1M2RcdWMxNDBcdWM3NDQgXHVkNTU4XHViMDk4XHVjNzU4IFx1YzU0NFx1YzJhNFx1ZDBhNCBcdWNmNTRcdWI0ZGMgXHViYjM4XHVjNzkwXHViODVjIFx1ZDQ1Y1x1ZDYwNFx1ZDU2MCBcdWFjODNcdWM3NzRcdWIyZTQuIFx1YjJlOFx1YzIxY1x1ZDc4OCwgXHViMmU0XHVhYzAxXHVkNjE1IFx1YjBiNFx1YmQ4MFx1YzVkMCBcdWQzZWNcdWQ1NjhcdWI0MThcdWM1YjQgXHVjNzg4XHViMjk0IFx1YmQ4MFx1YmQ4NFx1Yzc1OCBcdWJlNDRcdWM3MjhcdWI4NWNcdWI5Y2MgXHVkMzEwXHViMmU4XHVkNTU4XHVjNWVjLCBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHVjNzc0IFx1YWMwMVx1YWMwMVx1Yzc1OCBcdWM1NDRcdWMyYTRcdWQwYTQgXHVjZjU0XHViNGRjXHViODVjIFx1ZDQ1Y1x1ZDYwNFx1ZDU1OFx1YWUzMFx1Yjg1YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+MCVcdWM3NzRcdWMwYzEgMjUlXHViYmY4XHViOWNjIC4gKFx1YzU0NFx1YzJhNFx1ZDBhNCBcdWNmNTRcdWI0ZGMgXHViYzg4XHVkNjM4IDQ2KTxcL2xpPlxyXG5cdDxsaT4yNSVcdWM3NzRcdWMwYzEgNTAlXHViYmY4XHViOWNjICsgKFx1YzU0NFx1YzJhNFx1ZDBhNCBcdWNmNTRcdWI0ZGMgXHViYzg4XHVkNjM4IDQzKTxcL2xpPlxyXG5cdDxsaT41MCVcdWM3NzRcdWMwYzEgNzUlXHViYmY4XHViOWNjIG8mbmJzcDsoXHVjNTQ0XHVjMmE0XHVkMGE0IFx1Y2Y1NFx1YjRkYyBcdWJjODhcdWQ2MzggMTExKTxcL2xpPlxyXG5cdDxsaT43NSVcdWM3NzRcdWMwYzEgMTAwJVx1YmJmOFx1YjljYyBcXCQgKFx1YzU0NFx1YzJhNFx1ZDBhNCBcdWNmNTRcdWI0ZGMgXHViYzg4XHVkNjM4IDM2KTxcL2xpPlxyXG5cdDxsaT4xMDAlICMgKFx1YzU0NFx1YzJhNFx1ZDBhNCBcdWNmNTRcdWI0ZGMgXHViYzg4XHVkNjM4IDM1KTxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1YmIzOFx1YzgxY1x1YzVkMFx1YzExYyBcdWM4ZmNcdWM1YjRcdWM5YzQgXHVhZGRjXHVjZTU5XHVjNWQwIFx1YjUzMFx1Yjc3YyBcdWIyZTRcdWFjMDFcdWQ2MTVcdWM3NTggXHVjNTQ0XHVjMmE0XHVkMGE0IFx1YzU0NFx1ZDJiOFx1Yjk3YyBcdWFkNmNcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgbiwgdywgaFx1YWMwMCBcdWJlNDggXHVjZTc4XHVjNzQ0IFx1YzBhY1x1Yzc3NFx1YzVkMCBcdWI0NTBcdWFjZTAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBuXHVjNzQwIFx1YjJlNFx1YWMwMVx1ZDYxNVx1Yzc1OCBcdWFmMmRcdWM5ZDNcdWM4MTBcdWM3NTggXHVhYzFjXHVjMjE4XHVjNzc0XHViYTcwIHdcdWM2NDAgaFx1YjI5NCBcdWFjYTlcdWM3OTBcdWM3NTggXHVkM2VkXHVhY2ZjIFx1YjE5Mlx1Yzc3NFx1Yzc3NFx1YjJlNC4gXHVjNzc0XHVjNWI0XHVjMTFjIG5cdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwXHViMjk0IFx1YjJlNFx1YWMwMVx1ZDYxNVx1Yzc0NCBcdWM3NzRcdWI4ZThcdWIyOTQgXHVhZjJkXHVjOWQzXHVjODEwXHVjNzc0IFx1YzJkY1x1YWNjNFx1YmMyOVx1ZDVhNVx1YzczY1x1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YzgxNVx1YzIxOCBcdWM4OGNcdWQ0NWMgeDxzdWI+aTxcL3N1Yj5cdWM2NDAgeTxzdWI+aTxcL3N1Yj5cdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAoMCAmbGU7IHg8c3ViPmk8XC9zdWI+ICZsZTsgdywgMCAmbGU7IHk8c3ViPmk8XC9zdWI+ICZsZTsgaCkgXHVjOGZjXHVjNWI0XHVjOWMwXHViMjk0IG4sIHcsIGhcdWIyOTQgXHViYWE4XHViNDUwIDEwMCBcdWM3NzRcdWQ1NThcdWM3NTggXHVjNzkwXHVjNWYwXHVjMjE4XHVjNzc0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPmhcdWFjMWMgXHVjOTA0XHVjNWQwIFx1YWM3OFx1Y2NkMCBcdWM1NDRcdWMyYTRcdWQwYTQgXHVjNTQ0XHVkMmI4XHViOTdjIFx1ZDQ1Y1x1ZDYwNFx1ZDU1OFx1YjI5NCB3XHVhYzFjXHVjNzU4IFx1YmIzOFx1Yzc5MFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiS29yZWFuIn0seyJwcm9ibGVtX2lkIjoiMTU5NyIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IkFTQ0lJIEFydCIsImRlc2NyaXB0aW9uIjoiPHA+QVNDSUkgYXJ0IGlzIGFuIGFydCBvZiBjcmVhdGluZyBwaWN0dXJlcyB3aXRoIGEgZ3JpZCBvZiBBU0NJSSBjaGFyYWN0ZXJzLiBUaGVyZSBhcmUgbWFueSBzdHlsZXMgb2YgQVNDSUkgYXJ0LCBidXQgd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIG1vc3QgcHJpbWl0aXZlIG9uZSwgd2hlcmUganVzdCBhbiBvdmVyYWxsIGNoYXJhY3RlciBkZW5zaXR5IGlzIHVzZWQgdG8gcmVwcmVzZW50IGRpXHVmYjAwZXJlbnRseSBzaGFkZWQgYXJlYXMgb2YgdGhlIHBpY3R1cmUuPFwvcD5cclxuXHJcbjxwPllvdSBzaG91bGQgd3JpdGUgYSBwcm9vZi1vZi1jb25jZXB0IHByb2dyYW0gdGhhdCByZW5kZXJzIGEgZmlsbGVkIGNsb3NlZCBwb2x5Z29uIHdpdGggYSByZWN0YW5ndWxhciBncmlkIG9mIEFTQ0lJIGNoYXJhY3RlcnMuIFRoZSB3aG9sZSBwcm9jZXNzIGlzIGV4cGxhaW5lZCBpbiBkZXRhaWwgYmVsb3cuPFwvcD5cclxuXHJcbjxwPkxldCBPWFkgYmUgYSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0ZW0gd2l0aCBPWCBwb2ludGluZyB0byB0aGUgcmlnaHQgYW5kIE9ZIHBvaW50aW5nIHVwLiBEcmF3aW5nIGNhbnZhcyBpcyBib3VuZGVkIHdpdGggKDA7IDApICZuZGFzaDsgKHc7IGgpIHJlY3RhbmdsZS4gUGl4ZWxzIG9uIHRoZSBjYW52YXMgYXJlICh4OyB5KSAmbmRhc2g7ICh4ICsgMTsgeSArIDEpIHNxdWFyZXMgd2hlcmUgeCBhbmQgeSBhcmUgaW50ZWdlcnMgc3VjaCB0aGF0IDAgJm1pZGRvdDsgeCAmbHQ7IHcgYW5kIDAgJm1pZGRvdDsgeSAmbHQ7IGguIEEgZmlsbGVkIGNsb3NlZCBwb2x5Z29uIHdpdGhvdXQgc2VsZmludGVyc2VjdGlvbnMgYW5kIHNlbGYtdG91Y2hpbmdzIChidXQgbm90IG5lY2Vzc2FyaWx5IGNvbnZleCkgaXMgZHJhd24gb24gdGhlIGNhbnZhcy4gUGl4ZWxzIG9mIHRoZSBjYW52YXMgYmVjb21lIHBhcnRpYWxseSBmaWxsZWQgZHVyaW5nIHRoZSBwcm9jZXNzLiBFYWNoIHBpeGVsIGlzIHJlcHJlc2VudGVkIGJ5IGFuIEFTQ0lJIGNoYXJhY3RlciBkZXBlbmRpbmcgb24gdGhlIHBlcmNlbnRhZ2Ugb2YgaXRzIGZpbGxlZCBhcmVhIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHRhYmxlOjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2FzY2lpYXJ0dGFibGUucG5nXCIgc3R5bGU9XCJoZWlnaHQ6MTIycHg7IHdpZHRoOjUzNXB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPlRoZSByZXN1bHRpbmcgQVNDSUkgY2hhcmFjdGVycyBmb3IgYWxsIHBpeGVscyBhcmUgcHJpbnRlZCB0b3AtdG8tYm90dG9tIGFuZCBsZWZ0LXRvLXJpZ2h0IHRvIGdldCBhIHZpc3VhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZHJhd2luZy48XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJcL3VwbG9hZFwvMjAxMDA0XC9hc2NpaS5wbmdcIiBzdHlsZT1cImhlaWdodDoyMTVweDsgd2lkdGg6MjM2cHhcIiBcLz48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIG9mIHRoZSBpbnB1dCBmaWxlIGNvbnRhaW5zIGludGVnZXJzIG4sIHcsIGFuZCBoICgzICZsZTsgbiAmbGU7IDEwMCwgMSAmbGU7IHcsIGggJmxlOyAxMDApICZtZGFzaDsgbnVtYmVyIG9mIHZlcnRpY2VzIGluIHRoZSBwb2x5Z29uLCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBjYW52YXMgcmVzcGVjdGl2ZWx5LiBUaGUgZm9sbG93aW5nIG4gbGluZXMgY29udGFpbiBjb29yZGluYXRlcyBvZiB0aGUgcG9seWdvbiB2ZXJ0aWNlcyBpbiBjbG9ja3dpc2Ugb3JkZXIuIFBvaW50IGkgaXMgZGVzY3JpYmVkIGJ5IHR3byBpbnRlZ2VycyB4PHN1Yj5pPFwvc3ViPiBhbmQgeTxzdWI+aTxcL3N1Yj4gKDAgJmxlOyB4aSAmbGU7IHcsIDAgJmxlOyB5PHN1Yj5pPFwvc3ViPiAmbGU7IGgpLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPldyaXRlIHRvIHRoZSBvdXRwdXQgZmlsZSBoIGxpbmVzIHdpdGggdyBBU0NJSSBjaGFyYWN0ZXJzIGVhY2ggdGhhdCByZXByZXNlbnQgQVNDSUkgYXJ0IGRyYXdpbmcgb2YgdGhlIGdpdmVuIHBvbHlnb24uPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCJ9XQ==

출처

ICPC > Regionals > Northern Eurasia > Northern Eurasia Finals > NEERC 2006 A번

  • 문제의 오타를 찾은 사람: 7020kjs
  • 문제를 번역한 사람: author5