Submission #1282129

#TimeUsernameProblemLanguageResultExecution timeMemory
1282129quocbaoo육각형 영역 (APIO21_hexagon)C++20
0 / 100
1 ms576 KiB
#include "hexagon.h" #include <bits/stdc++.h> #define ll long long using namespace std; const ll MOD = 1e9 + 7; ll hx[6] = {-1, 0, 1, 1, 0, -1}; ll hy[6] = {1, 1, 0, -1, -1, 0}; ll modpow(ll u, ll v) { ll s = 1; while (v > 0) { if (v & 1) s = (s * u) % MOD; u = (u * u) % MOD; v >>= 1; } return s; } int draw_territory(int N, int A, int B, std::vector<int> D, std::vector<int> L) { vector<ll> a(N + 1, 0), b(N + 1, 0); ll po = modpow(2, MOD - 2); // nghịch đảo của 2 mod MOD __int128 s = 0; ll to = 0; for (int i = 1; i <= N; i++) { int dir = D[i - 1]; ll len = L[i - 1]; a[i] = a[i - 1] + hx[dir] * len; b[i] = b[i - 1] + hy[dir] * len; s += (__int128)(a[i - 1] - a[i]) * (__int128)(b[i - 1] + b[i]); to = (to + len) % MOD; } s += (__int128)(a[N] - a[0]) * (__int128)(b[N] + b[0]); if (s < 0) s = -s; ll x = (ll)(s % MOD); to = (to + 2) % MOD; x = (x + MOD) % MOD; return (int)(((x + to) * po) % MOD); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...