Submission #125392


Source Code Expand

import java.io.PrintWriter;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    
    static final long MOD = 1000000007;
   
     public static void main(String[] args) {
          Scanner in = new Scanner(System.in);
          PrintWriter out = new PrintWriter(System.out);

          int R = in.nextInt();
          int C = in.nextInt();
          int Y = in.nextInt();
          int X = in.nextInt();
          int D = in.nextInt();
          int L = in.nextInt();
         
          long[][] cmb = new long[1001][1001];
          for (int i = 0 ; i < cmb.length ; i++) {
              cmb[i][0] = cmb[i][i] = 1;
              for (int j = 1 ; j < i ; j++) {
                  cmb[i][j] = (cmb[i-1][j] + cmb[i-1][j-1]) % MOD;
              }
          }
         
          int DL = D+L;
          long[][][] dp = new long[2][16][DL+1];
          dp[0][0][0] = 1;
          for (int i = 0 ; i < X*Y ; i++) {
        	  int ptn = 0;
        	  int y = i / X;
        	  int x = i % X;
        	  if (y == 0) {
        		  ptn |= 1;
        	  }
        	  if (y == Y-1) {
        		  ptn |= 2;
        	  }
        	  if (x == 0) {
        		  ptn |= 4;
        	  }
        	  if (x == X-1) {
        		  ptn |= 8;
        	  }
        	  
        	  int fi = i%2;
        	  int ti = 1-fi;
        	  for (int p = 0 ; p < 16 ; p++) {
        		  for (int u = 0 ; u <= DL ; u++) {
        			  // use
        			  if (u+1 <= DL) {
        				  dp[ti][p|ptn][u+1] += dp[fi][p][u];
        				  dp[ti][p|ptn][u+1] %= MOD;
        			  }
        			  
        			  // not use
        			  dp[ti][p][u] += dp[fi][p][u];
    				  dp[ti][p][u] %= MOD;
        		  }
        	  }
        	  
        	  
        	  for (int p = 0 ; p < 16 ; p++) {
        		  Arrays.fill(dp[fi][p], 0);
        	  }        	  
          }
          
          int xyi = (X*Y)%2;
          long ans = dp[xyi][15][DL] * cmb[DL][D];
          ans %= MOD;
		  ans *= (R-Y+1)*(C-X+1);
		  ans %= MOD;
		  out.println(ans);
          out.flush();
     }

     public static void debug(Object... os) {
          System.err.println(Arrays.deepToString(os));
     }
}

Submission Info

Submission Time
Task D - AtCoder社の冬
User hamadu
Language Java (OpenJDK 1.7.0)
Score 101
Code Size 2297 Byte
Status AC
Exec Time 764 ms
Memory 38256 KB

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 507 ms 37732 KB
00_sample_02E.txt AC 477 ms 37596 KB
00_sample_03E.txt AC 525 ms 38220 KB
00_sample_04.txt AC 548 ms 38088 KB
test_01.txt AC 488 ms 37860 KB
test_02.txt AC 463 ms 37728 KB
test_03E.txt AC 473 ms 37608 KB
test_04E.txt AC 542 ms 38204 KB
test_05.txt AC 467 ms 37600 KB
test_06.txt AC 527 ms 38120 KB
test_07E.txt AC 496 ms 38096 KB
test_08E.txt AC 509 ms 38216 KB
test_09.txt AC 503 ms 37852 KB
test_10.txt AC 515 ms 37996 KB
test_11E.txt AC 510 ms 38212 KB
test_12E.txt AC 533 ms 38092 KB
test_13.txt AC 482 ms 37608 KB
test_14.txt AC 747 ms 38072 KB
test_15E.txt AC 559 ms 37864 KB
test_16E.txt AC 750 ms 37992 KB
test_17.txt AC 468 ms 37568 KB
test_18.txt AC 495 ms 37988 KB
test_19E.txt AC 487 ms 37572 KB
test_20E.txt AC 501 ms 38068 KB
test_21.txt AC 504 ms 37988 KB
test_22.txt AC 534 ms 38092 KB
test_23E.txt AC 463 ms 37720 KB
test_24E.txt AC 630 ms 38208 KB
test_25.txt AC 504 ms 37980 KB
test_26.txt AC 488 ms 37724 KB
test_27E.txt AC 545 ms 38204 KB
test_28E.txt AC 600 ms 38220 KB
test_29.txt AC 548 ms 38100 KB
test_30.txt AC 584 ms 38220 KB
test_31E.txt AC 508 ms 38216 KB
test_32E.txt AC 764 ms 37992 KB
test_33.txt AC 471 ms 37608 KB
test_34.txt AC 493 ms 37984 KB
test_35.txt AC 466 ms 37728 KB
test_36E.txt AC 467 ms 37612 KB
test_37E.txt AC 466 ms 37740 KB
test_38E.txt AC 467 ms 37680 KB
test_39E.txt AC 510 ms 37608 KB
test_40.txt AC 495 ms 38104 KB
test_41.txt AC 471 ms 37712 KB
test_42.txt AC 514 ms 38256 KB
test_43.txt AC 471 ms 37728 KB
test_44.txt AC 490 ms 38132 KB
test_45E.txt AC 465 ms 37612 KB
test_46.txt AC 471 ms 37604 KB
test_47E.txt AC 464 ms 37600 KB
test_48.txt AC 472 ms 37724 KB