Submission #2069265
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define _MACRO(_1, _2, _3, NAME, ...) NAME
#define _repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define _rep(i,n) _repl(i,0,n)
#define rep(...) _MACRO(__VA_ARGS__, _repl, _rep)(__VA_ARGS__)
#define mp make_pair
#define pb push_back
#define all(x) begin(x),end(x)
#define uniq(x) sort(all(x)),(x).erase(unique(all(x)),end(x))
#define fi first
#define se second
#define dbg(...) _dbg(#__VA_ARGS__, __VA_ARGS__)
void _dbg(string){cerr<<endl;}
template<class H,class... T> void _dbg(string s,H h,T... t){int l=s.find(',');cerr<<s.substr(0,l)<<" = "<<h<<", ";_dbg(s.substr(l+1),t...);}
template<class T,class U> ostream& operator<<(ostream &o, const pair<T,U> &p){o<<"("<<p.fi<<","<<p.se<<")";return o;}
template<class T> ostream& operator<<(ostream &o, const vector<T> &v){o<<"[";for(T t:v){o<<t<<",";}o<<"]";return o;}
#define INF 1120000000
#define MOD 1000000007
// x^n mod p
long mod_pow(long x, long n, long p=MOD){
if(x==0) return 0;
long res=1;
x %= p;
while(n>0){
if(n&1) res=res*x%p;
x=x*x%p;
n>>=1;
}
return res;
}
inline long mod_inv(long x, long p=MOD){ return mod_pow(x%p, p-2, p); }
long tbl[305][305][155];
long fact[400];
long finv[400];
int main(){
fact[0] = 1;
rep(i,305) fact[i+1] = (i+1)*fact[i] %MOD;
rep(i,305) finv[i] = mod_inv(fact[i]);
int n,x,y,z;
cin>>n>>x>>y>>z;
if(x+y+z < n){
cout << 0 << endl;
return 0;
}
rep(c1,301) rep(c2,301) rep(c3,151){
long &v = tbl[c1][c2][c3];
if(c1+c2<=c3) v = finv[c1] %MOD * finv[c2] %MOD * finv[c3-c1-c2] %MOD;
else v = 0;
if(c1>0) v += tbl[c1-1][c2][c3];
if(c2>0) v += tbl[c1][c2-1][c3];
if(c1>0 && c2>0) v -= tbl[c1-1][c2-1][c3];
v %= MOD;
if(v < 0) v += MOD;
}
long ans = 0;
rep(i,x+1) rep(j,y+1) rep(k,z+1){
for(int l=0; i+j+k+l<=n && i+j+l<=x+y; l++){
int c1 = y+z-j-k;
int c2 = x+z-i-k;
int c3 = n-i-j-k-l;
long sel = fact[n] * finv[i] %MOD * finv[j] %MOD * finv[k] %MOD * finv[l] %MOD;
ans += sel * tbl[c1][c2][c3] %MOD;
}
}
cout << ans %MOD << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
F - 就職活動 |
User |
tossy |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2194 Byte |
Status |
AC |
Exec Time |
179 ms |
Memory |
112896 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Score / Max Score |
0 / 0 |
25 / 25 |
75 / 75 |
Status |
|
|
|
Set Name |
Test Cases |
Sample |
00-sample-00.txt, 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt |
Subtask1 |
01-small-04.txt, 01-small-05.txt, 01-small-06.txt, 01-small-07.txt, 01-small-08.txt, 01-small-09.txt, 01-small-10.txt, 01-small-11.txt, 01-small-12.txt, 01-small-13.txt, 01-small-14.txt, 01-small-15.txt, 01-small-16.txt, 01-small-17.txt, 01-small-18.txt, 01-small-19.txt, 01-small-20.txt, 00-sample-00.txt, 00-sample-01.txt, 00-sample-02.txt |
Subtask2 |
02-large-21.txt, 02-large-22.txt, 02-large-23.txt, 02-large-24.txt, 02-large-25.txt, 02-large-26.txt, 02-large-27.txt, 02-large-28.txt, 02-large-29.txt, 02-large-30.txt, 02-large-31.txt, 02-large-32.txt, 02-large-33.txt, 02-large-34.txt, 02-large-35.txt, 02-large-36.txt, 02-large-37.txt, 02-large-38.txt, 02-large-39.txt, 02-large-40.txt, 02-large-41.txt, 02-large-42.txt, 02-large-43.txt, 02-large-44.txt, 02-large-45.txt, 00-sample-03.txt |
Case Name |
Status |
Exec Time |
Memory |
00-sample-00.txt |
AC |
78 ms |
112896 KB |
00-sample-01.txt |
AC |
78 ms |
112896 KB |
00-sample-02.txt |
AC |
78 ms |
112896 KB |
00-sample-03.txt |
AC |
78 ms |
112896 KB |
01-small-04.txt |
AC |
78 ms |
112896 KB |
01-small-05.txt |
AC |
78 ms |
112896 KB |
01-small-06.txt |
AC |
78 ms |
112896 KB |
01-small-07.txt |
AC |
78 ms |
112896 KB |
01-small-08.txt |
AC |
78 ms |
112896 KB |
01-small-09.txt |
AC |
78 ms |
112896 KB |
01-small-10.txt |
AC |
78 ms |
112896 KB |
01-small-11.txt |
AC |
78 ms |
112896 KB |
01-small-12.txt |
AC |
78 ms |
112896 KB |
01-small-13.txt |
AC |
78 ms |
112896 KB |
01-small-14.txt |
AC |
78 ms |
112896 KB |
01-small-15.txt |
AC |
78 ms |
112896 KB |
01-small-16.txt |
AC |
78 ms |
112896 KB |
01-small-17.txt |
AC |
78 ms |
112896 KB |
01-small-18.txt |
AC |
78 ms |
112896 KB |
01-small-19.txt |
AC |
1 ms |
256 KB |
01-small-20.txt |
AC |
1 ms |
256 KB |
02-large-21.txt |
AC |
78 ms |
112896 KB |
02-large-22.txt |
AC |
78 ms |
112896 KB |
02-large-23.txt |
AC |
173 ms |
112896 KB |
02-large-24.txt |
AC |
83 ms |
112896 KB |
02-large-25.txt |
AC |
121 ms |
112896 KB |
02-large-26.txt |
AC |
154 ms |
112896 KB |
02-large-27.txt |
AC |
125 ms |
112896 KB |
02-large-28.txt |
AC |
132 ms |
112896 KB |
02-large-29.txt |
AC |
162 ms |
112896 KB |
02-large-30.txt |
AC |
107 ms |
112896 KB |
02-large-31.txt |
AC |
121 ms |
112896 KB |
02-large-32.txt |
AC |
109 ms |
112896 KB |
02-large-33.txt |
AC |
128 ms |
112896 KB |
02-large-34.txt |
AC |
179 ms |
112896 KB |
02-large-35.txt |
AC |
88 ms |
112896 KB |
02-large-36.txt |
AC |
164 ms |
112896 KB |
02-large-37.txt |
AC |
80 ms |
112896 KB |
02-large-38.txt |
AC |
146 ms |
112896 KB |
02-large-39.txt |
AC |
124 ms |
112896 KB |
02-large-40.txt |
AC |
175 ms |
112896 KB |
02-large-41.txt |
AC |
125 ms |
112896 KB |
02-large-42.txt |
AC |
176 ms |
112896 KB |
02-large-43.txt |
AC |
96 ms |
112896 KB |
02-large-44.txt |
AC |
112 ms |
112896 KB |
02-large-45.txt |
AC |
126 ms |
112896 KB |