diff --git a/3623. Count Number of Trapezoids I b/3623. Count Number of Trapezoids I new file mode 100644 index 0000000..9596ced --- /dev/null +++ b/3623. Count Number of Trapezoids I @@ -0,0 +1,35 @@ +#include +using namespace std; + +class Solution { +public: + int countTrapezoids(vector>& points) { + const long long MOD = 1000000007LL; + const long long INV2 = (MOD + 1) / 2; + + unordered_map freq; + freq.reserve(points.size() * 2); + for (auto &p : points) { + long long y = p[1]; + ++freq[y]; + } + + long long sumF = 0; + long long sumF2 = 0; + + for (auto &kv : freq) { + long long c = kv.second; + if (c >= 2) { + long long f = c * (c - 1) / 2 % MOD; + sumF = (sumF + f) % MOD; + sumF2 = (sumF2 + f * f % MOD) % MOD; + } + } + + long long ans = (sumF * sumF) % MOD; + ans = (ans - sumF2 + MOD) % MOD; + ans = ans * INV2 % MOD; + + return (int)ans; + } +};