Submission #1227062
Source Code Expand
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
#define REP(i, n) for(int i = 0; i < (int)(n); ++i)
typedef long long ll;
const int MOD = 1000000007;
struct K {
int lb;
int ub;
};
ll mypow(ll x, ll n) {
if (n == 0) return 1;
if (n & 1) return mypow(x * x % MOD, n / 2) * x % MOD;
return mypow(x * x % MOD, n / 2);
}
int table[410][410];
int n;
K vs[410];
ll memo[410][410];
ll solve(int pos, int rest) {
ll& res = memo[pos][rest];
if(res < 0) {
res = 0;
if(pos == n-1) {
for(int x = vs[pos].lb; x <= vs[pos].ub; ++x) {
res = (res + mypow(x, rest)) % MOD;
}
} else {
for(int i = 0; i <= rest; ++i) {
ll solveRest = solve(pos+1, rest-i);
ll xx = (table[i][vs[pos].ub+1] - table[i][vs[pos].lb] + MOD) % MOD;
res = (res + xx * solveRest) % MOD;
}
}
// cerr << "solve(" << pos << ", " << rest << ") = " << res << endl;
}
return res;
}
int main(void) {
for(int i = 0; i <= 400; ++i) {
for(int x = 0; x <= 400; ++x) {
table[i][x+1] = (table[i][x] + mypow(x, i)) % MOD;
}
}
int nCandy;
scanf("%d%d", &n, &nCandy);
REP(i, n) {
scanf("%d", &vs[i].lb);
}
REP(i, n) {
scanf("%d", &vs[i].ub);
}
memset(memo, -1, sizeof memo);
ll res = solve(0, nCandy);
printf("%lld\n", res);
return 0;
}
Submission Info
Submission Time |
|
Task |
E - Children and Candies |
User |
ush |
Language |
C++14 (GCC 5.4.1) |
Score |
800 |
Code Size |
1475 Byte |
Status |
AC |
Exec Time |
355 ms |
Memory |
2176 KB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:61:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d", &n, &nCandy);
^
./Main.cpp:63:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &vs[i].lb);
^
./Main.cpp:66:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &vs[i].ub);
^
Judge Result
Set Name |
Sample |
Subtask |
All |
Score / Max Score |
0 / 0 |
400 / 400 |
400 / 400 |
Status |
|
|
|
Set Name |
Test Cases |
Sample |
0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt, 0_004.txt |
Subtask |
0_001, 0_003, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt |
All |
0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt, 0_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 2_017.txt, 2_018.txt, 2_019.txt, 2_020.txt, 2_021.txt, 2_022.txt, 2_023.txt, 2_024.txt, 2_025.txt, 2_026.txt, 2_027.txt, 2_028.txt, 2_029.txt |
Case Name |
Status |
Exec Time |
Memory |
0_000.txt |
AC |
9 ms |
2176 KB |
0_001.txt |
AC |
9 ms |
2176 KB |
0_002.txt |
AC |
9 ms |
2176 KB |
0_003.txt |
AC |
9 ms |
2176 KB |
0_004.txt |
AC |
9 ms |
2176 KB |
1_005.txt |
AC |
9 ms |
2176 KB |
1_006.txt |
AC |
9 ms |
2176 KB |
1_007.txt |
AC |
9 ms |
2176 KB |
1_008.txt |
AC |
9 ms |
2176 KB |
1_009.txt |
AC |
9 ms |
2176 KB |
1_010.txt |
AC |
9 ms |
2176 KB |
1_011.txt |
AC |
9 ms |
2176 KB |
1_012.txt |
AC |
9 ms |
2176 KB |
1_013.txt |
AC |
9 ms |
2176 KB |
1_014.txt |
AC |
342 ms |
2176 KB |
1_015.txt |
AC |
337 ms |
2176 KB |
1_016.txt |
AC |
340 ms |
2176 KB |
2_017.txt |
AC |
9 ms |
2176 KB |
2_018.txt |
AC |
9 ms |
2176 KB |
2_019.txt |
AC |
9 ms |
2176 KB |
2_020.txt |
AC |
9 ms |
2176 KB |
2_021.txt |
AC |
9 ms |
2176 KB |
2_022.txt |
AC |
9 ms |
2176 KB |
2_023.txt |
AC |
355 ms |
2176 KB |
2_024.txt |
AC |
351 ms |
2176 KB |
2_025.txt |
AC |
58 ms |
2176 KB |
2_026.txt |
AC |
10 ms |
2176 KB |
2_027.txt |
AC |
277 ms |
2176 KB |
2_028.txt |
AC |
13 ms |
2176 KB |
2_029.txt |
AC |
10 ms |
2176 KB |