Submission #123615


Source Code Expand

// compile with "g++ XXX.cc -mno-cygwin -O2" in Cygwin

#include<iostream>
#include<sstream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include<cmath>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<numeric>
#include<functional>
#include<complex>
#include<bitset>
#include<cassert>

using namespace std;
#define BET(a,b,c) ((a)<=(b)&&(b)<(c))
#define FOR(i,n) for(int i=0,i##_end=(int(n));i<i##_end;i++)
#define FOR3(i,a,b) for(int i=a,i##_end=b;i<i##_end;i++)
#define FOR_EACH(it,v) for(__typeof(v.begin()) it=v.begin(),it_end=v.end() ; it != it_end ; it++)
#define SZ(x) (int)(x.size())
#define ALL(x) (x).begin(),(x).end()
#define MP make_pair
#define CLS(x,val) memset((x) , val , sizeof(x)) 
typedef long long ll_t;
typedef long double ld_t;
typedef vector<int> VI; 
typedef vector<VI> VVI;
typedef complex<int> xy_t;

template<typename T> void debug(T v , string delimiter = "\n")
{ for(__typeof(v.begin()) it=v.begin(),it_end=v.end() ; it != it_end ; it++) cout << *it << delimiter; cout << flush ;}

int dx[]  = {0,1,0,-1};
int dy[]  = {1,0,-1,0};
string ds = "SENW";

const double PI = 4.0*atan(1.0);

const int mod = 1000000000 + 7;

long long choose[1000][1000];

int main() {
  FOR(i,1000) FOR(j,1000) {
    if(i < j) choose[i][j] = 0;
    else {
      if(i == j || j == 0) {
        choose[i][j] = 1;
      }else {
        choose[i][j] = (choose[i-1][j-1] + choose[i-1][j]) % mod;
      }
    }
  }

  long long W,H,X,Y,D,L;
  cin>>W>>H>>X>>Y>>D>>L;

  long long ans = 0;  
    int all = D + L;
    long long placePattern = (W - X + 1) * (H - Y + 1) % mod;
  long long pre = 0 ;
  long long dp2[1000];
  for(int y = 1; y <= Y ; y++){
    long long dp[100][1000];
    memset(dp , 0 , sizeof(dp));
    dp[0][all] = 1;
    FOR(i,X) {
      for(int j=0;j<=all;j++) {
        for(int k=0;k<=j;k++) {
          int placed = j - k;
          if(i == 0 && placed == 0) continue;
          if(placed > y) continue;
          if(i == X - 1 && placed == 0) continue;
          dp[i+1][k] += dp[i][j] * choose[y][placed];
          dp[i+1][k] %= mod;
        }
      }
      //FOR(j,all+1) cout<<" "<<dp[i+1][j]; cout<<endl;
    }
    long long pattern = dp[X][0] ;
    long long just = pattern;
    for(int y2=1;y2<y;y2++){
      just -= (dp2[y2] * (y - y2 + 1)) % mod;
      just = (just + mod) % mod;
    }
    dp2[y] = just;
    
    pre += pattern;
    pre %= mod;
    if(y == Y){
      ans += just;
      ans %= mod;
    }
  }
  ans = (ans * placePattern) % mod;
  ans = (ans * choose[all][D]) % mod;

  cout<<ans<<endl;

  return 0 ;
}

Submission Info

Submission Time
Task D - AtCoder社の冬
User EmK
Language C++ (G++ 4.6.4)
Score 101
Code Size 2719 Byte
Status AC
Exec Time 658 ms
Memory 9496 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 41 ms 9384 KB
00_sample_02E.txt AC 42 ms 9384 KB
00_sample_03E.txt AC 52 ms 9380 KB
00_sample_04.txt AC 87 ms 9316 KB
test_01.txt AC 43 ms 9384 KB
test_02.txt AC 41 ms 9384 KB
test_03E.txt AC 42 ms 9372 KB
test_04E.txt AC 102 ms 9376 KB
test_05.txt AC 42 ms 9320 KB
test_06.txt AC 61 ms 9332 KB
test_07E.txt AC 42 ms 9380 KB
test_08E.txt AC 52 ms 9336 KB
test_09.txt AC 44 ms 9380 KB
test_10.txt AC 51 ms 9384 KB
test_11E.txt AC 49 ms 9376 KB
test_12E.txt AC 90 ms 9376 KB
test_13.txt AC 42 ms 9388 KB
test_14.txt AC 619 ms 9496 KB
test_15E.txt AC 125 ms 9380 KB
test_16E.txt AC 655 ms 9312 KB
test_17.txt AC 43 ms 9316 KB
test_18.txt AC 43 ms 9336 KB
test_19E.txt AC 40 ms 9316 KB
test_20E.txt AC 43 ms 9312 KB
test_21.txt AC 42 ms 9376 KB
test_22.txt AC 71 ms 9392 KB
test_23E.txt AC 40 ms 9368 KB
test_24E.txt AC 289 ms 9380 KB
test_25.txt AC 46 ms 9368 KB
test_26.txt AC 45 ms 9388 KB
test_27E.txt AC 93 ms 9308 KB
test_28E.txt AC 191 ms 9380 KB
test_29.txt AC 66 ms 9380 KB
test_30.txt AC 122 ms 9388 KB
test_31E.txt AC 52 ms 9388 KB
test_32E.txt AC 658 ms 9380 KB
test_33.txt AC 42 ms 9388 KB
test_34.txt AC 43 ms 9376 KB
test_35.txt AC 41 ms 9316 KB
test_36E.txt AC 42 ms 9380 KB
test_37E.txt AC 41 ms 9372 KB
test_38E.txt AC 42 ms 9372 KB
test_39E.txt AC 42 ms 9328 KB
test_40.txt AC 43 ms 9376 KB
test_41.txt AC 42 ms 9384 KB
test_42.txt AC 40 ms 9380 KB
test_43.txt AC 42 ms 9368 KB
test_44.txt AC 44 ms 9380 KB
test_45E.txt AC 42 ms 9384 KB
test_46.txt AC 42 ms 9376 KB
test_47E.txt AC 42 ms 9312 KB
test_48.txt AC 42 ms 9384 KB