Submission #811619


Source Code Expand

import java.util.*;
public class Main{
	public static void main(String[] args){
		Scanner stdIn = new Scanner(System.in);
		int R = stdIn.nextInt();
		int C = stdIn.nextInt();
		int X = stdIn.nextInt();
		int Y = stdIn.nextInt();
		int D = stdIn.nextInt();
		int L = stdIn.nextInt();
		
		int numMod = 1000000007;
		int num1 = ((R - X + 1)*(C - Y + 1));
		
		int[] decrX = {0, 1, 0, 2, 1, 0, 2, 1, 2};
		int[] decrY = {0, 0, 1, 0, 1, 2, 1, 2, 2};
		int[][] array = new int[9][3];
		for(int i = 0; i <= 8; i++){
			array[i][0] = D;
			array[i][1] = L;
			array[i][2] = (X - decrX[i])*(Y - decrY[i]) - D - L;
		}
		int[] multiple = {1, -2, -2, 1, 4, 1, -2, -2, 1};
		
		long sum1 = 0;
		if(X > 0 && Y > 0 && X*Y >= D + L){
			int n = array[0].length;
			int prodN = 1;
			for(int i = 0; i <= n - 1; i++){
				if(array[0][i] < 0){
					prodN = 0;
				}
				prodN *= (array[0][i] + 1);
			}
			if(prodN > 0){
				int position[] = new int[prodN];
				position[0] = 1;
				
				for(int i = 0; i <= prodN - 1; i++){
					int delta = 1;
					int temp = i;
					for(int j = 0; j <= n - 1; j++){
						if((temp % (array[0][j] + 1)) <= array[0][j] - 1){
							position[i + delta] = (int)(((long)position[i + delta] + (long)position[i]) % numMod);
						}
						
						delta *= (array[0][j] + 1);
						temp /= (array[0][j] + 1);
					}
				}
				
				sum1 = sum1 + (long)(position[prodN - 1])*(long)multiple[0];
				
				for(int i = 1; i <= 8; i++){
					if((X - decrX[i]) > 0 && (Y - decrY[i]) > 0 && (X - decrX[i])*(Y - decrY[i]) >= D + L){
						n = array[i].length;
						int temp = 1;
						int posIdx = 0;
						for(int j = 0; j <= n - 1; j++){
							if(array[i][j] < 0){
								posIdx = 0; break;
							}
							posIdx += (temp*array[i][j]);
							
							temp *= (array[0][j] + 1);
						}
						if(posIdx > 0){
							sum1 = sum1 + (long)(position[posIdx])*(long)multiple[i];
						}
					}
				}
			}
		}
		
		int num2 = (int)((sum1 >= 0 ? (sum1 % numMod) : numMod - ((-sum1) % numMod)));
		int ans = ((int)(((long)num1 * (long)num2) % numMod));
		
		System.out.println(ans);
	}
	
}

Submission Info

Submission Time
Task D - AtCoder社の冬
User ste234689ado
Language Java (OpenJDK 1.7.0)
Score 101
Code Size 2166 Byte
Status AC
Exec Time 885 ms
Memory 40092 KiB

Judge Result

Set Name sub All
Score / Max Score 100 / 100 1 / 1
Status
AC × 25
AC × 52
Set Name Test Cases
sub 00_sample_01E.txt, 00_sample_02E.txt, 00_sample_03E.txt, test_03E.txt, test_04E.txt, test_07E.txt, test_08E.txt, test_11E.txt, test_12E.txt, test_15E.txt, test_16E.txt, test_19E.txt, test_20E.txt, test_23E.txt, test_24E.txt, test_27E.txt, test_28E.txt, test_31E.txt, test_32E.txt, test_36E.txt, test_37E.txt, test_38E.txt, test_39E.txt, test_45E.txt, test_47E.txt
All 00_sample_01E.txt, 00_sample_02E.txt, 00_sample_03E.txt, 00_sample_04.txt, test_01.txt, test_02.txt, test_03E.txt, test_04E.txt, test_05.txt, test_06.txt, test_07E.txt, test_08E.txt, test_09.txt, test_10.txt, test_11E.txt, test_12E.txt, test_13.txt, test_14.txt, test_15E.txt, test_16E.txt, test_17.txt, test_18.txt, test_19E.txt, test_20E.txt, test_21.txt, test_22.txt, test_23E.txt, test_24E.txt, test_25.txt, test_26.txt, test_27E.txt, test_28E.txt, test_29.txt, test_30.txt, test_31E.txt, test_32E.txt, test_33.txt, test_34.txt, test_35.txt, test_36E.txt, test_37E.txt, test_38E.txt, test_39E.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45E.txt, test_46.txt, test_47E.txt, test_48.txt
Case Name Status Exec Time Memory
00_sample_01E.txt AC 396 ms 18996 KiB
00_sample_02E.txt AC 331 ms 19060 KiB
00_sample_03E.txt AC 351 ms 19564 KiB
00_sample_04.txt AC 885 ms 40092 KiB
test_01.txt AC 334 ms 19028 KiB
test_02.txt AC 332 ms 19056 KiB
test_03E.txt AC 333 ms 19008 KiB
test_04E.txt AC 333 ms 19148 KiB
test_05.txt AC 323 ms 19044 KiB
test_06.txt AC 363 ms 20452 KiB
test_07E.txt AC 327 ms 19036 KiB
test_08E.txt AC 326 ms 19052 KiB
test_09.txt AC 349 ms 19464 KiB
test_10.txt AC 379 ms 20408 KiB
test_11E.txt AC 352 ms 19152 KiB
test_12E.txt AC 345 ms 19036 KiB
test_13.txt AC 345 ms 19092 KiB
test_14.txt AC 378 ms 20064 KiB
test_15E.txt AC 323 ms 18992 KiB
test_16E.txt AC 327 ms 19036 KiB
test_17.txt AC 322 ms 19100 KiB
test_18.txt AC 333 ms 19016 KiB
test_19E.txt AC 353 ms 19140 KiB
test_20E.txt AC 339 ms 19076 KiB
test_21.txt AC 334 ms 19140 KiB
test_22.txt AC 375 ms 20456 KiB
test_23E.txt AC 340 ms 19036 KiB
test_24E.txt AC 338 ms 19108 KiB
test_25.txt AC 338 ms 19020 KiB
test_26.txt AC 336 ms 19068 KiB
test_27E.txt AC 348 ms 19108 KiB
test_28E.txt AC 336 ms 19036 KiB
test_29.txt AC 371 ms 20584 KiB
test_30.txt AC 381 ms 20840 KiB
test_31E.txt AC 331 ms 19048 KiB
test_32E.txt AC 329 ms 18988 KiB
test_33.txt AC 325 ms 19084 KiB
test_34.txt AC 327 ms 19044 KiB
test_35.txt AC 324 ms 19036 KiB
test_36E.txt AC 329 ms 19016 KiB
test_37E.txt AC 326 ms 19076 KiB
test_38E.txt AC 329 ms 19024 KiB
test_39E.txt AC 340 ms 19168 KiB
test_40.txt AC 356 ms 19360 KiB
test_41.txt AC 339 ms 18996 KiB
test_42.txt AC 366 ms 20048 KiB
test_43.txt AC 344 ms 19092 KiB
test_44.txt AC 372 ms 20324 KiB
test_45E.txt AC 333 ms 19160 KiB
test_46.txt AC 331 ms 19052 KiB
test_47E.txt AC 328 ms 19076 KiB
test_48.txt AC 325 ms 19084 KiB