Submission #62302


Source Code Expand

import java.io.*;
import java.math.BigInteger;
import java.util.*;



public class Main {
	private static final int mod = (int)1e9+7;

	//	static final int[] positive;
	void imosHexagon(final long[][] v, final int x, int y, int r, int val) {
		v[y-r+2][x] -= val;
		v[y-r+2][x+r-1] += val;

		v[y-r+1][x+r] -= val;
		v[y-r+1][x] += val;

		v[y+1][x+r-1] -= val;
		v[y+1][x+r] += val;


		v[y+1][x-r] -= val;
		v[y+1][x-r+1] += val;

		v[y+r+1][x-r] += val;
		v[y+r][x-r+1] -= val;

		v[y+r+1][x] -= val;
		v[y+r][x] += val;
	}

	void runImosHexagon(final long[][] v) {
		// 右
		for(int y = 0; y < v.length; y++) {
			for(int x = 1; x < v[y].length; x++) {
				v[y][x] += v[y][x-1];
			}
		}

		// 右上
		for(int x = 0; x < v[0].length; x++) {
			for(int y = 1; y < v.length; y++) {
				v[y][x] += v[y-1][x];
			}
		}
		
		// 左上
		for(int x_ = 0; x_ < v[0].length; x_++) {
			for(int y = 1, x = x_ - 1; 0 <= x && y < v.length; y++, x--) {
				v[y][x] += v[y-1][x+1];
			}
		}
		for(int y_ = 1; y_ < v.length - 1; y_++) {
			for(int y = y_ + 1, x = v[0].length - 2; 0 <= x && y < v.length; y++, x--) {
				v[y][x] += v[y-1][x+1];
			}
		}
	}
	
	void runTestImos() {
		final long[][] val = new long[10][10];
		imosHexagon(val, 5, 5, 1, 1);
		runImosHexagon(val);
		for(int y = val.length - 1; y >= 0; y--) {
			for(int x = 0; x < val[y].length; x++) {
				IOFast.out.printf("%02d ", val[y][x]);
			}
			IOFast.out.println();
		}
	}

	public void run() throws IOException {
//		runTestImos();
//		if(true) return;
		
		final int n = IOFast.nextInt();
		final long[][] val = new long[2011][2011];
		final int base = val.length / 2;
		
		for(int i = 0; i < n; i++) {
			final int t = IOFast.nextInt();
			final int x = IOFast.nextInt() + base;
			final int y = IOFast.nextInt() + base;
			final int s = IOFast.nextInt();

			if(t == 1) {
				imosHexagon(val, x, y, s, 1);
			}
			else if(t == 2) {
				for(int j = 1; j <= s; j++) {
					imosHexagon(val, x, y, j, 1);
				}
			}
			else {
				for(int j = s, k = 1; j >= 1; j--, k += 2) {
					imosHexagon(val, x, y, j, k);
				}
			}
		}
		
		runImosHexagon(val);
		long res = 0;
		for(int y = 0; y < val.length; y++) {
			for(int x = 0; x < val[y].length; x++) {
				res = Math.max(val[y][x], res);
			}
		}
		IOFast.out.println(res);
	}

	public static void main(String[] args) throws IOException {
		//		IOFast.setFileIO("rle-size.in", "rle-size.out");
		new Main().run();
		IOFast.out.flush();
	}



	static public class IOFast {
		private static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		private static PrintWriter out = new PrintWriter(System.out);

		static void setFileIO(String ins, String outs) throws IOException {
			try {
				in = new BufferedReader(new FileReader(ins));
				out = new PrintWriter(new FileWriter(outs));
			}
			catch(IOException e) {
				System.err.println(e);
				throw e;
			}
		}

		//		private static final int BUFFER_SIZE = 50 * 200000;
		private static int pos, readLen;
		private static final char[] buffer = new char[1024 * 8];
		private static final StringBuilder buf = new StringBuilder();
		private static boolean[] isDigit = new boolean[256];
		private static boolean[] isSpace = new boolean[256];

		static {
			for(int i = 0; i < 10; i++) {
				isDigit['0' + i] = true;
			}
			isDigit['-'] = true;
			isSpace[' '] = isSpace['\r'] = isSpace['\n'] = isSpace['\t'] = true;
		}

		static boolean endInput;

		private static int read() throws IOException {
			if(readLen == -1) {
				return -1;
			}

			if(pos >= readLen) {
				readLen = in.read(buffer);
				pos = 0;

				if(readLen <= 0) {
					return -1;
				}
			}

			return buffer[pos++];
		}

		private static int nextInt() throws IOException {
			boolean plus = false;
			int ret = 0;
			while(true) {
				final int c = read();

				if(c == -1) {
					endInput = true;
					return Integer.MIN_VALUE;
				}

				if(isDigit[c]) {
					if(c != '-') {
						plus = true;
						ret = c - '0';
					}
					break;
				}
			}

			while(true) {
				final int c = read();
				if(c == -1 || !isDigit[c]) {
					break;
				}
				ret = ret * 10 + c - '0';
			}

			return plus ? ret : -ret;
		}

		private static long nextLong() throws IOException {
			boolean plus = false;
			long ret = 0;
			while(true) {
				final int c = read();

				if(c == -1) {
					endInput = true;
					return Integer.MIN_VALUE;
				}

				if(isDigit[c]) {
					if(c != '-') {
						plus = true;
						ret = c - '0';
					}
					break;
				}
			}

			while(true) {
				final int c = read();
				if(c == -1 || !isDigit[c]) {
					break;
				}
				ret = ret * 10 + c - '0';
			}

			return plus ? ret : -ret;
		}

		private static char nextChar() throws IOException {
			while(true) {
				final int c = read();

				if(c == -1) {
					endInput = true;
					return '\0';
				}

				if(!isSpace[c]) {
					return (char)c;
				}
			}
		}

		private static String next() throws IOException {
			buf.setLength(0);

			while(true) {
				final int c = read();

				if(c == -1) {
					endInput = true;
					return "-1";
				}

				if(!isSpace[c]) {
					buf.append((char)c);
					break;
				}
			}

			while(true) {
				final int c = read();

				if(c == -1 || isSpace[c]) {
					break;
				}
				buf.append((char)c);
			}

			return buf.toString();
		}

		private static double nextDouble() throws IOException {
			return Double.parseDouble(next());
		}

	}

}

Submission Info

Submission Time
Task I - その味は甘くて
User tanzaku
Language Java (OpenJDK 1.7.0)
Score 150
Code Size 5684 Byte
Status AC
Exec Time 1131 ms
Memory 58116 KB

Judge Result

Set Name small large1 large3
Score / Max Score 10 / 10 40 / 40 100 / 100
Status
AC × 20
AC × 39
AC × 63
Set Name Test Cases
small small/case_000.txt, small/case_001.txt, small/case_002.txt, small/case_003.txt, small/case_004.txt, small/case_005.txt, small/case_006.txt, small/case_007.txt, small/case_008.txt, small/case_009.txt, small/case_010.txt, small/case_011.txt, small/case_012.txt, small/case_013.txt, small/case_014.txt, small/case_015.txt, small/case_024.txt, small/case_025.txt, small/case_026.txt, small/case_027.txt
large1 large1/case_000.txt, large1/case_001.txt, large1/case_002.txt, large1/case_003.txt, large1/case_004.txt, large1/case_005.txt, large1/case_006.txt, large1/case_007.txt, large1/case_008.txt, large1/case_009.txt, large1/case_010.txt, large1/case_011.txt, large1/case_012.txt, large1/case_013.txt, large1/case_014.txt, large1/case_015.txt, large1/case_024.txt, large1/case_025.txt, large1/case_026.txt, large1/case_027.txt, large1/large1_case_000.txt, large1/large1_case_001.txt, large1/large1_case_002.txt, large1/large1_case_003.txt, large1/large1_case_004.txt, large1/large1_case_005.txt, large1/large1_case_006.txt, large1/large1_case_007.txt, large1/large1_case_008.txt, large1/large1_case_009.txt, large1/large1_case_010.txt, large1/large1_case_011.txt, large1/large1_case_012.txt, large1/large1_case_013.txt, large1/large1_case_014.txt, large1/large1_case_020.txt, large1/large1_case_021.txt, large1/large1_case_022.txt, large1/large1_case_023.txt
large3 large3/case_000.txt, large3/case_001.txt, large3/case_002.txt, large3/case_003.txt, large3/case_004.txt, large3/case_005.txt, large3/case_006.txt, large3/case_007.txt, large3/case_008.txt, large3/case_009.txt, large3/case_010.txt, large3/case_011.txt, large3/case_012.txt, large3/case_013.txt, large3/case_014.txt, large3/case_015.txt, large3/case_024.txt, large3/case_025.txt, large3/case_026.txt, large3/case_027.txt, large3/large1_case_000.txt, large3/large1_case_001.txt, large3/large1_case_002.txt, large3/large1_case_003.txt, large3/large1_case_004.txt, large3/large1_case_005.txt, large3/large1_case_006.txt, large3/large1_case_007.txt, large3/large1_case_008.txt, large3/large1_case_009.txt, large3/large1_case_010.txt, large3/large1_case_011.txt, large3/large1_case_012.txt, large3/large1_case_013.txt, large3/large1_case_014.txt, large3/large1_case_020.txt, large3/large1_case_021.txt, large3/large1_case_022.txt, large3/large1_case_023.txt, large3/large3_case_000.txt, large3/large3_case_001.txt, large3/large3_case_002.txt, large3/large3_case_003.txt, large3/large3_case_004.txt, large3/large3_case_005.txt, large3/large3_case_006.txt, large3/large3_case_007.txt, large3/large3_case_008.txt, large3/large3_case_009.txt, large3/large3_case_010.txt, large3/large3_case_011.txt, large3/large3_case_012.txt, large3/large3_case_013.txt, large3/large3_case_014.txt, large3/large3_case_015.txt, large3/large3_case_016.txt, large3/large3_case_017.txt, large3/large3_case_018.txt, large3/large3_case_019.txt, large3/large3_case_020.txt, large3/large3_case_021.txt, large3/large3_case_022.txt, large3/large3_case_023.txt
Case Name Status Exec Time Memory
large1/case_000.txt AC 758 ms 53776 KB
large1/case_001.txt AC 746 ms 53880 KB
large1/case_002.txt AC 748 ms 53876 KB
large1/case_003.txt AC 739 ms 53872 KB
large1/case_004.txt AC 756 ms 53784 KB
large1/case_005.txt AC 768 ms 53840 KB
large1/case_006.txt AC 727 ms 53788 KB
large1/case_007.txt AC 741 ms 53772 KB
large1/case_008.txt AC 747 ms 53784 KB
large1/case_009.txt AC 762 ms 53852 KB
large1/case_010.txt AC 757 ms 53868 KB
large1/case_011.txt AC 750 ms 53824 KB
large1/case_012.txt AC 775 ms 53776 KB
large1/case_013.txt AC 754 ms 53780 KB
large1/case_014.txt AC 767 ms 53884 KB
large1/case_015.txt AC 804 ms 53868 KB
large1/case_024.txt AC 774 ms 53768 KB
large1/case_025.txt AC 752 ms 53784 KB
large1/case_026.txt AC 769 ms 53892 KB
large1/case_027.txt AC 768 ms 53884 KB
large1/large1_case_000.txt AC 796 ms 54516 KB
large1/large1_case_001.txt AC 795 ms 54676 KB
large1/large1_case_002.txt AC 799 ms 54720 KB
large1/large1_case_003.txt AC 793 ms 54580 KB
large1/large1_case_004.txt AC 816 ms 54556 KB
large1/large1_case_005.txt AC 805 ms 54544 KB
large1/large1_case_006.txt AC 793 ms 54396 KB
large1/large1_case_007.txt AC 792 ms 54548 KB
large1/large1_case_008.txt AC 787 ms 54628 KB
large1/large1_case_009.txt AC 801 ms 54640 KB
large1/large1_case_010.txt AC 783 ms 54540 KB
large1/large1_case_011.txt AC 798 ms 54796 KB
large1/large1_case_012.txt AC 780 ms 54280 KB
large1/large1_case_013.txt AC 789 ms 54616 KB
large1/large1_case_014.txt AC 830 ms 54848 KB
large1/large1_case_020.txt AC 785 ms 54540 KB
large1/large1_case_021.txt AC 783 ms 54632 KB
large1/large1_case_022.txt AC 787 ms 54652 KB
large1/large1_case_023.txt AC 784 ms 54544 KB
large3/case_000.txt AC 753 ms 53776 KB
large3/case_001.txt AC 742 ms 53876 KB
large3/case_002.txt AC 766 ms 53772 KB
large3/case_003.txt AC 760 ms 53828 KB
large3/case_004.txt AC 763 ms 53880 KB
large3/case_005.txt AC 767 ms 53924 KB
large3/case_006.txt AC 760 ms 53780 KB
large3/case_007.txt AC 753 ms 53876 KB
large3/case_008.txt AC 759 ms 53876 KB
large3/case_009.txt AC 752 ms 53876 KB
large3/case_010.txt AC 767 ms 53876 KB
large3/case_011.txt AC 770 ms 53792 KB
large3/case_012.txt AC 764 ms 53788 KB
large3/case_013.txt AC 759 ms 53780 KB
large3/case_014.txt AC 754 ms 53744 KB
large3/case_015.txt AC 737 ms 53876 KB
large3/case_024.txt AC 777 ms 53748 KB
large3/case_025.txt AC 753 ms 53780 KB
large3/case_026.txt AC 737 ms 53824 KB
large3/case_027.txt AC 753 ms 53824 KB
large3/large1_case_000.txt AC 809 ms 54608 KB
large3/large1_case_001.txt AC 793 ms 54476 KB
large3/large1_case_002.txt AC 798 ms 54408 KB
large3/large1_case_003.txt AC 993 ms 54544 KB
large3/large1_case_004.txt AC 774 ms 54548 KB
large3/large1_case_005.txt AC 784 ms 54580 KB
large3/large1_case_006.txt AC 804 ms 54492 KB
large3/large1_case_007.txt AC 790 ms 54504 KB
large3/large1_case_008.txt AC 796 ms 54628 KB
large3/large1_case_009.txt AC 809 ms 54420 KB
large3/large1_case_010.txt AC 810 ms 54668 KB
large3/large1_case_011.txt AC 805 ms 54492 KB
large3/large1_case_012.txt AC 792 ms 54428 KB
large3/large1_case_013.txt AC 801 ms 54460 KB
large3/large1_case_014.txt AC 783 ms 54548 KB
large3/large1_case_020.txt AC 769 ms 54540 KB
large3/large1_case_021.txt AC 783 ms 54412 KB
large3/large1_case_022.txt AC 783 ms 54628 KB
large3/large1_case_023.txt AC 800 ms 54276 KB
large3/large3_case_000.txt AC 1046 ms 54536 KB
large3/large3_case_001.txt AC 1055 ms 54448 KB
large3/large3_case_002.txt AC 1131 ms 54476 KB
large3/large3_case_003.txt AC 1081 ms 54792 KB
large3/large3_case_004.txt AC 1121 ms 54780 KB
large3/large3_case_005.txt AC 1064 ms 54704 KB
large3/large3_case_006.txt AC 1063 ms 54440 KB
large3/large3_case_007.txt AC 1039 ms 54848 KB
large3/large3_case_008.txt AC 1054 ms 54620 KB
large3/large3_case_009.txt AC 1116 ms 54840 KB
large3/large3_case_010.txt AC 1103 ms 58116 KB
large3/large3_case_011.txt AC 1089 ms 54644 KB
large3/large3_case_012.txt AC 1045 ms 55308 KB
large3/large3_case_013.txt AC 1084 ms 55236 KB
large3/large3_case_014.txt AC 1044 ms 54564 KB
large3/large3_case_015.txt AC 1111 ms 54768 KB
large3/large3_case_016.txt AC 1043 ms 56656 KB
large3/large3_case_017.txt AC 1053 ms 54400 KB
large3/large3_case_018.txt AC 1098 ms 54408 KB
large3/large3_case_019.txt AC 1097 ms 54992 KB
large3/large3_case_020.txt AC 944 ms 55860 KB
large3/large3_case_021.txt AC 983 ms 55304 KB
large3/large3_case_022.txt AC 945 ms 55772 KB
large3/large3_case_023.txt AC 934 ms 55512 KB
small/case_000.txt AC 749 ms 53876 KB
small/case_001.txt AC 758 ms 53928 KB
small/case_002.txt AC 780 ms 53876 KB
small/case_003.txt AC 759 ms 53780 KB
small/case_004.txt AC 757 ms 53784 KB
small/case_005.txt AC 759 ms 53780 KB
small/case_006.txt AC 770 ms 53828 KB
small/case_007.txt AC 761 ms 53872 KB
small/case_008.txt AC 759 ms 53788 KB
small/case_009.txt AC 769 ms 53772 KB
small/case_010.txt AC 755 ms 53868 KB
small/case_011.txt AC 768 ms 53876 KB
small/case_012.txt AC 747 ms 53780 KB
small/case_013.txt AC 761 ms 53876 KB
small/case_014.txt AC 755 ms 53764 KB
small/case_015.txt AC 752 ms 53796 KB
small/case_024.txt AC 761 ms 53872 KB
small/case_025.txt AC 768 ms 53876 KB
small/case_026.txt AC 763 ms 53828 KB
small/case_027.txt AC 770 ms 53776 KB