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
AC × 2
AC × 22
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