Submission #4084774
Source Code Expand
#if 0
cat <<EOF >mistaken-paste
#endif
// thanks for @rsk0315_h4x
#pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
#define _USE_MATH_DEFINES
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <math.h>
#include <time.h>
#define BIG 2000000007
#define VERYBIG 2000000000000007LL
#define MOD 1000000007
#define FOD 998244353
typedef uint64_t ull;
typedef int64_t sll;
#define N_MAX 1000000
#ifdef __cplusplus
#include <queue>
#include <stack>
#include <tuple>
#include <set>
#include <map>
#include <string>
#include <algorithm>
#include <functional>
#include <array>
using std::queue;
using std::priority_queue;
using std::stack;
using std::tuple;
using std::set;
using std::map;
using std::vector;
using std::greater;
using std::pair;
using std::string;
using std::get;
template <typename T, typename U>
pair<T, U> operator+(pair<T, U> l, pair<T, U> r) {
return pair<T, U>(l.first + r.first, l.second + r.second);
}
#endif
typedef struct {
int32_t a;
int32_t b;
} hw;
typedef struct {
sll a;
sll b;
} hwll;
typedef struct {
sll a;
sll b;
sll c;
} hwllc;
typedef struct {
hwll a;
hwll b;
} linell;
ull n, m;
ull h, w;
ull k;
ull q;
sll va, vb, vc, vd, ve, vf;
ull ua, ub, uc, ud, ue, uf;
long double vra, vrb, vrc;
double vda, vdb, vdc;
char ch, dh;
ull umin (ull x, ull y) {
return (x < y) ? x : y;
}
ull umax (ull x, ull y) {
return (x > y) ? x : y;
}
sll smin (sll x, sll y) {
return (x < y) ? x : y;
}
sll smax (sll x, sll y) {
return (x > y) ? x : y;
}
ull gcd (ull x, ull y) {
if (x < y) {
return gcd(y, x);
} else if (y == 0) {
return x;
} else {
return gcd(y, x % y);
}
}
ull bitpow (ull a, ull x, ull modulo) {
ull result = 1;
while (x) {
if (x & 1) {
result *= a;
result %= modulo;
}
x /= 2;
a = (a * a) % modulo;
}
return result;
}
ull divide (ull a, ull b, ull modulo) {
return (a * bitpow(b, modulo - 2, modulo)) % modulo;
}
ull udiff (ull a, ull b) {
if (a >= b) {
return a - b;
} else {
return b - a;
}
}
sll sdiff (sll a, sll b) {
if (a >= b) {
return a - b;
} else {
return b - a;
}
}
int bitcount (ull n) {
int result = 0;
while (n) {
if (n & 1) result++;
n /= 2;
}
return result;
}
#define BEGCMP(NAME) int32_t NAME (const void *left, const void *right)
#define DEFLR(TYPE) TYPE l=*(TYPE*)left,r=*(TYPE*)right
#define CMPRET(L, R) if((L)<(R))return-1;if((L)>(R))return+1
// int32_t pullcomp (const void *left, const void *right) {
// ull l = *(ull*)left;
// ull r = *(ull*)right;
// if (l < r) {
// return -1;
// }
// if (l > r) {
// return +1;
// }
// return 0;
// }
BEGCMP(pullcomp){
DEFLR(ull);
CMPRET(l, r);
return 0;
}
BEGCMP(prevcomp){
DEFLR(ull);
CMPRET(r, l);
return 0;
}
BEGCMP(psllcomp){
DEFLR(sll);
CMPRET(l, r);
return 0;
}
BEGCMP(pcharcomp){
DEFLR(char);
CMPRET(l, r);
return 0;
}
BEGCMP(pdoublecomp){
DEFLR(double);
CMPRET(l, r);
return 0;
}
int32_t pstrcomp (const void *left, const void *right) {
char* l = *(char**)left;
char* r = *(char**)right;
return strcmp(l, r);
}
BEGCMP(phwllABcomp){
DEFLR(hwll);
CMPRET(l.a, r.a);
CMPRET(l.b, r.b);
return 0;
}
BEGCMP(phwllREVcomp){
DEFLR(hwll);
CMPRET(l.b, r.b);
CMPRET(l.a, r.a);
return 0;
}
BEGCMP(ptriplecomp){
DEFLR(hwllc);
CMPRET(l.a, r.a);
CMPRET(l.b, r.b);
CMPRET(l.c, r.c);
return 0;
}
BEGCMP(ptripleREVcomp){
DEFLR(hwllc);
CMPRET(l.b, r.b);
CMPRET(l.a, r.a);
CMPRET(l.c, r.c);
return 0;
}
int32_t pquadcomp (const void *left, const void *right) {
linell l = *(linell*)left;
linell r = *(linell*)right;
sll ac = phwllABcomp(&(l.a), &(r.a));
if (ac) return ac;
sll bc = phwllABcomp(&(l.b), &(r.b));
if (bc) return bc;
return 0;
}
bool isinrange (sll left, sll x, sll right) {
return (left <= x && x <= right);
}
bool isinrange_soft (sll left, sll x, sll right) {
return (left <= x && x <= right) || (left >= x && x >= right);
}
sll a[N_MAX + 5];
// ull a[N_MAX + 5];
// sll a[3001][3001];
sll b[N_MAX + 5];
// ull b[N_MAX + 5];
// sll b[3001][3001];
sll c[N_MAX + 5];
ull d[N_MAX + 5];
sll e[N_MAX];
char s[N_MAX + 1];
// char s[3010][3010];
char t[N_MAX + 1];
// char t[3010][3010];
char u[N_MAX + 1];
hwll xy[N_MAX + 5];
hwllc tup[N_MAX + 5];
sll table[3005][3005];
// here we go
ull ncr[5006][5006];
ull solve () {
sll i, j, ki, li;
// ull result = 0;
sll result = 0;
double dresult = 0;
// ull maybe = 0;
sll maybe = 0;
// ull sum = 0;
sll sum = 0;
sll item;
ull *dpcell;
if (ub % 2) goto fail;
ncr[0][0] = 1;
for (i = 1; i <= n; i++) {
for (j = 0; j <= i; j++) {
if (j) ncr[i][j] += ncr[i - 1][j - 1];
if (j < i) ncr[i][j] += ncr[i - 1][j];
ncr[i][j] %= MOD;
}
}
for (i = 0; i * 3 <= uc; i++) {
ull x = ncr[ua + ub / 2 + i][i];
ull y = 0;
sll s = uc - i * 3;
if (!ub) {
if (s <= ua) y = ncr[ua][uc - i * 3];
} else for (j = 0; j <= ua; j++) {
ull t = s + ub / 2 - 1;
if (s < j) break;
y += ncr[ua][j] * ncr[t - j][ub / 2 - 1] % MOD;
}
y %= MOD;
result += x * y % MOD;
}
result %= MOD;
result = (result * ncr[ua + ub / 2][ua]) % MOD;
printf("%lld\n", result);
// printf("%.15lf\n", dresult);
// puts(s);
return 0;
success:
// puts("YES");
puts("Yes");
// printf("%llu\n", result);
// puts("0");
// puts("Yay!");
return 0;
fail:
// puts("NO");
// puts("No");
puts("0");
// puts("-1");
// puts("-1 -1 -1");
// puts("Impossible");
return 1;
}
int32_t main (void) {
int32_t i, j;
int32_t x, y;
n = 3;
// scanf("%llu%llu", &h, &w);
scanf("%llu", &n, &m);
// scanf("%llu", &k, &n, &m);
// scanf("%llu%llu", &h, &w);
// scanf("%s", s);
// scanf("%llu", &q);
// scanf("%lld%lld", &va, &vb, &vc, &vd);
scanf("%llu%llu%llu", &ua, &ub, &uc, &ud, &ue);
// scanf("%s", t);
// scanf("%llu", &k);
// scanf("%lld", &m);
// for (i = 0; i < n; i++) {
// // scanf("%lld%lld", &xy[i].a, &xy[i].b);
// // scanf("%lld%lld%lld", &tup[i].a, &tup[i].b, &tup[i].c);
// // scanf("%lld", &a[i]);
// // scanf("%lld", &b[i]);
// scanf("%lld", &c[i]);
// // scanf("%lld", &d[i]);
// // a[i]--;
// // b[i]--;
// // c[i]--;
// // d[i]--;
// // xy[i].a--;
// // xy[i].b--;
// // tup[i].a--;
// // tup[i].b--;
// }
// for (i = 0; i < m; i++) {
// scanf("%lld%lld", &a[i], &b[i]);
// a[i]--;
// b[i]--;
// }
// for (i = 1; i <= n; i++) {
// scanf("%llu", &d[i]);
// }
// for (i = 0; i < n; i++) {
// scanf("%lld%lld%lld", &c[i], &a[i], &b[i]);
// }
// for (i = 0; i < q; i++) {
// // scanf("%lld%lld", &xy[i].a, &xy[i].b);
// scanf("%lld", &c[i]);
// // xy[i].a--;
// // xy[i].b--;
// }
// for (i = 0; i < n; i++) {
// for (j = 0; j < n; j++) {
// scanf("%lld", &table[i][j]);
// // table[i][j]--;
// }
// }
// for (i = 0; i < h; i++) {
// scanf("%s", s[i]);
// }
// scanf("%llu", &q);
solve();
return 0;
}
Submission Info
Submission Time
2019-01-25 21:35:41+0900
Task
J - 123 Pairs
User
sheyasutaka
Language
C (GCC 5.4.1)
Score
1500
Code Size
7272 Byte
Status
AC
Exec Time
76 ms
Memory
199936 KB
Compile Error
./Main.c: In function ‘solve’:
./Main.c:312:9: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘sll {aka long int}’ [-Wformat=]
printf("%lld\n", result);
^
./Main.c: In function ‘main’:
./Main.c:343:8: warning: format ‘%llu’ expects argument of type ‘long long unsigned int *’, but argument 2 has type ‘ull * {aka long unsigned int *}’ [-Wformat=]
scanf("%llu", &n, &m);
^
./Main.c:343:8: warning: too many arguments for format [-Wformat-extra-args]
./Main.c:349:8: warning: format ‘%llu’ expects argument of type ‘long long unsigned int *’, but argument 2 has type ‘ull * {aka long unsigned int *}’ [-Wformat=]
scanf("%llu%llu%llu", &ua, &ub, &uc, &ud, &ue);
^
./Main.c:349:8: warning: format ‘%llu’ expects argument of type ‘long long unsigned int *’, but argument 3 has type ‘ull * {aka long unsigned int *}’ [-Wformat=]
./Main.c:349:8: warning: format ‘%llu’ expects argument of type ‘long long unsigned int *’, but argument 4 has type ‘ull * {a...
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
1500 / 1500
Status
Set Name
Test Cases
Sample
example0.txt, example1.txt
All
000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, 043.txt, 044.txt, 045.txt, 046.txt, 047.txt, 048.txt, 049.txt, example0.txt, example1.txt
Case Name
Status
Exec Time
Memory
000.txt
AC
75 ms
199808 KB
001.txt
AC
74 ms
199936 KB
002.txt
AC
74 ms
199936 KB
003.txt
AC
74 ms
199936 KB
004.txt
AC
74 ms
199936 KB
005.txt
AC
74 ms
199936 KB
006.txt
AC
74 ms
199936 KB
007.txt
AC
74 ms
199936 KB
008.txt
AC
74 ms
199936 KB
009.txt
AC
74 ms
199936 KB
010.txt
AC
73 ms
198912 KB
011.txt
AC
73 ms
198784 KB
012.txt
AC
73 ms
198784 KB
013.txt
AC
8 ms
32896 KB
014.txt
AC
9 ms
34944 KB
015.txt
AC
69 ms
188544 KB
016.txt
AC
19 ms
65792 KB
017.txt
AC
40 ms
120960 KB
018.txt
AC
17 ms
61568 KB
019.txt
AC
46 ms
137344 KB
020.txt
AC
49 ms
145536 KB
021.txt
AC
74 ms
198784 KB
022.txt
AC
63 ms
176256 KB
023.txt
AC
74 ms
199936 KB
024.txt
AC
75 ms
199936 KB
025.txt
AC
74 ms
199936 KB
026.txt
AC
75 ms
199936 KB
027.txt
AC
75 ms
199936 KB
028.txt
AC
75 ms
199936 KB
029.txt
AC
75 ms
199936 KB
030.txt
AC
75 ms
199936 KB
031.txt
AC
75 ms
199936 KB
032.txt
AC
74 ms
199936 KB
033.txt
AC
1 ms
4224 KB
034.txt
AC
45 ms
137344 KB
035.txt
AC
64 ms
178304 KB
036.txt
AC
44 ms
135296 KB
037.txt
AC
2 ms
8320 KB
038.txt
AC
76 ms
199936 KB
039.txt
AC
1 ms
4224 KB
040.txt
AC
1 ms
4224 KB
041.txt
AC
74 ms
199936 KB
042.txt
AC
74 ms
199936 KB
043.txt
AC
2 ms
6272 KB
044.txt
AC
2 ms
6272 KB
045.txt
AC
2 ms
6272 KB
046.txt
AC
2 ms
6272 KB
047.txt
AC
2 ms
6272 KB
048.txt
AC
2 ms
6272 KB
049.txt
AC
2 ms
6272 KB
example0.txt
AC
2 ms
6272 KB
example1.txt
AC
7 ms
28800 KB