This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "hexagon.h"
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MOD = 1e9 + 7;
ll A, B;
ll mop(ll a, ll p) {
ll ans = 1;
for (;p != 0ll;p >>= 1ll, a = a * a % MOD) {
if (p & 1ll) ans = ans * a % MOD;
}
return ans;
}
int draw_territory(int N, int AA, int BB, vector<int> D, vector<int> L) {
// N = 3
A = AA, B = BB;
ll l = L[0];
// triangle with l + 1 level
ll cnt = (l + 1) * (l + 2) / 2;
cnt %= MOD;
ll res = cnt * A % MOD;
// sum = 1 * 1 - 1 + 2 * 2 - 2 + 3 * 3 - 3 + ... + (l+1) * (l+1) - (l+1)
// sum = (l+1)(l+2)(2*l+3)/6
ll sum = (l + 1) * (l + 2) % MOD * (2 * l + 3) % MOD * mop(6, MOD - 2) % MOD;
sum = (sum - cnt + MOD) % MOD;
res = (res + sum * B % MOD) % MOD;
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |