Submission #1212119
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<b;i++)
int mod = 1000000007;
int add(int x, int y) { return (x += y) >= mod ? x - mod : x; }
template<class... T> int add(int x, T... y) { return add(x, add(y...)); }
int mul(int x, int y) { return 1LL * x * y % mod; }
template<class... T> int mul(int x, T... y) { return mul(x, mul(y...)); }
int sub(int x, int y) { return add(x, mod - y); }
template<class V, int ME> class BIT {
public:
V bit[1 << ME];
V operator()(int e) { V s = 0; e++; while (e) s = add(s, bit[e - 1]), e -= e&-e; return s; }
void update(int e, V v) { e++; while (e <= 1 << ME) bit[e - 1] = add(bit[e - 1], v), e += e&-e; }
};
//-----------------------------------------------------------------------------------
int N;
int dp[1010101];
BIT<int, 20> sm;
//-----------------------------------------------------------------------------------
int main() {
cin >> N;
dp[1] = N;
sm.update(1, dp[1]);
dp[2] = add(dp[1], mul(N - 1, N - 1), N - 1);
sm.update(2, dp[2]);
rep(i, 3, N + 1) {
// Naive
//dp[i] = add(dp[i - 1], mul(N - 1, N - 1), N - i + 2);
//rep(j, 1, i - 2) dp[i] = add(dp[i], dp[j]);
// Optimized
dp[i] = add(dp[i - 1], mul(N - 1, N - 1), sm(i - 3), N - i + 2);
sm.update(i, dp[i]);
}
cout << dp[N] << endl;
}
Submission Info
Submission Time |
|
Task |
F - Infinite Sequence |
User |
hamayanhamayan |
Language |
C++14 (GCC 5.4.1) |
Score |
1000 |
Code Size |
1406 Byte |
Status |
AC |
Exec Time |
56 ms |
Memory |
8192 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
1000 / 1000 |
Status |
|
|
Set Name |
Test Cases |
Sample |
0_000.txt, 0_001.txt |
All |
0_000.txt, 0_001.txt, max_1000000.txt, max_999745.txt, max_999880.txt, max_999999.txt, min_1.txt, rnd_14.txt, rnd_22.txt, rnd_25002.txt, rnd_2956.txt, rnd_3.txt, rnd_380467.txt, rnd_407774.txt, rnd_52228.txt, rnd_68.txt, rnd_804783.txt, rnd_85984.txt, rnd_894324.txt, rnd_93.txt, rnd_963981.txt, rnd_968416.txt |
Case Name |
Status |
Exec Time |
Memory |
0_000.txt |
AC |
2 ms |
4352 KB |
0_001.txt |
AC |
39 ms |
6912 KB |
max_1000000.txt |
AC |
56 ms |
8192 KB |
max_999745.txt |
AC |
56 ms |
8192 KB |
max_999880.txt |
AC |
56 ms |
8192 KB |
max_999999.txt |
AC |
56 ms |
8192 KB |
min_1.txt |
AC |
2 ms |
4352 KB |
rnd_14.txt |
AC |
2 ms |
4352 KB |
rnd_22.txt |
AC |
2 ms |
4352 KB |
rnd_25002.txt |
AC |
4 ms |
4480 KB |
rnd_2956.txt |
AC |
2 ms |
4352 KB |
rnd_3.txt |
AC |
2 ms |
4352 KB |
rnd_380467.txt |
AC |
24 ms |
5888 KB |
rnd_407774.txt |
AC |
25 ms |
6016 KB |
rnd_52228.txt |
AC |
5 ms |
4608 KB |
rnd_68.txt |
AC |
2 ms |
4352 KB |
rnd_804783.txt |
AC |
47 ms |
7552 KB |
rnd_85984.txt |
AC |
7 ms |
4736 KB |
rnd_894324.txt |
AC |
51 ms |
7808 KB |
rnd_93.txt |
AC |
2 ms |
4352 KB |
rnd_963981.txt |
AC |
55 ms |
8064 KB |
rnd_968416.txt |
AC |
55 ms |
8064 KB |