Submission #25072176


Source Code Expand

Copy
#include <bits/stdc++.h>
using namespace std;
int MOD = 1000000007;
int PMOD = 1000000007;
inline int exgcd(int a, int md = MOD) {
a %= md;
if (a < 0) a += md;
int b = md, u = 0, v = 1;
while (a) {
int t = b / a;
b -= t * a; swap(a, b);
u -= t * v; swap(u, v);
}
if (u < 0) u += md;
return u;
}
inline int add(int a, int b) { return a + b >= MOD ? a + b - MOD : a + b; }
inline int sub(int a, int b) { return a - b < 0 ? a - b + MOD : a - b; }
inline int mul(int a, int b) { return 1LL * a * b % MOD; }
inline int powmod(int a, long long b) {
int res = 1;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <bits/stdc++.h>
using namespace std;
int MOD = 1000000007;
int PMOD = 1000000007;
inline int exgcd(int a, int md = MOD) {
    a %= md;
    if (a < 0) a += md;
    int b = md, u = 0, v = 1;
    while (a) {
        int t = b / a;
        b -= t * a; swap(a, b);
        u -= t * v; swap(u, v);
    }
    if (u < 0) u += md;
    return u;
}
inline int add(int a, int b) { return a + b >= MOD ? a + b - MOD : a + b; }
inline int sub(int a, int b) { return a - b < 0 ? a - b + MOD : a - b; }
inline int mul(int a, int b) { return 1LL * a * b % MOD; }
inline int powmod(int a, long long b) {
    int res = 1;
    while (b > 0) {
        if (b & 1) res = 1LL * res * a % MOD;
        a = 1LL * a * a % MOD;
        b >>= 1;
    }
    return res;
}

constexpr int maximum = 200000;
vector<int> fac(maximum + 1), ifac(maximum + 1), ord(maximum + 1);
vector<long long> pdivs, divs; // 质因子数组 和 质因子的幂次数组

// 求解形如 x = ci (mod mi) 的线性方程组 mi 必须是素数
int CRT(vector<long long> c, vector<long long> m) {
    long long M = m[0], ans = 0;
    for (int i = 1; i < (int)m.size(); ++i) M *= m[i];
    for (int i = 0; i < (int)m.size(); ++i) { // Mi * ti * ci
        long long mi = M / m[i];
        long long ti = exgcd(mi, m[i]); // mi 模 m[i] 的逆元
        ans = (ans + mi * ti % M * c[i] % M) % M;
    }
    ans = (ans + M) % M; // 返回模 M 意义下的唯一解
    return ans;
}

inline int binom(int n, int m) {
    if (n < m || n < 0 || m < 0) return 0;
    int res = mul(fac[n], exgcd(mul(fac[n - m], fac[m])));
    res = mul(res, powmod(PMOD, ord[n] - ord[n - m] - ord[m]));
    return res;
}

void prepareFactorials() {
    ord[0] = ord[1] = 0, fac[0] = fac[1] = 1;
    for (int i = 2; i <= maximum; i++) {
        long long cnt = 0, now = i;
        while (now % MOD == 0) {
            ++cnt;
            now /= MOD;
        }
        ord[i] = ord[i - 1] + cnt; // ord 是MOD这一质因子的出现次数前缀和
        fac[i] = mul(fac[now - 1], now); // fac是去掉了MOD这一质因子后的阶乘
    }
}

void getDivisors(int x) {
    for (int i = 2; 1LL * i * i <= x; i++) {
        int d = 1;
        while (x % i == 0) x /= i, d *= i;
        if (d != 1) {
            pdivs.emplace_back(i);
            divs.emplace_back(d);
        }
    }
    if (x != 1) {
        pdivs.emplace_back(x);
        divs.emplace_back(x);
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, t, res = 1;
    cin >> n >> t >> MOD;
    if (MOD == 1) {
        cout << "0\n";
        return 0;
    }
    getDivisors(MOD);
    vector<pair<int, int>> pr(n), rp;
    vector<long long> C;
    for (auto& i : pr) {
        cin >> i.first >> i.second;
        auto [x, y] = i;
        x = abs(x), y = abs(y);
        if ((t - x - y) < 0 || (t - x - y) % 2 != 0) {
            cout << 0 << "\n";
            return 0;
        } else {
            int dx = abs(x + y), dy = abs(y - x);
            rp.push_back({ (t - dx) / 2 + dx, (t - dy) / 2 + dy });
        }
    }
    for (int i = 0; i < (int)pdivs.size(); i++) {
        MOD = divs[i];
        PMOD = pdivs[i];
        prepareFactorials();
        res = 1;
        for (int j = 0; j < rp.size(); j++) {
            auto [x, y] = rp[j];
            int cnt = mul(binom(t, x), binom(t, y));
            res = mul(res, cnt);
        }
        C.push_back(res);
    }
    cout << CRT(C, divs) << "\n";
    return 0;
}

Submission Info

Submission Time
Task D - Don't worry. Be Together
User st1vdy
Language C++ (GCC 9.2.1)
Score 100
Code Size 3595 Byte
Status AC
Exec Time 234 ms
Memory 7424 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:112:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  112 |         for (int j = 0; j < rp.size(); j++) {
      |                         ~~^~~~~~~~~~~

Judge Result

Set Name part1 part2 part3
Score / Max Score 40 / 40 30 / 30 30 / 30
Status
AC × 31
AC × 31
AC × 91
Set Name Test Cases
part1 part1/part1_00_sample_00.txt, part1/part1_00_sample_01.txt, part1/part1_maxrand_00.txt, part1/part1_maxrand_01.txt, part1/part1_maxrand_02.txt, part1/part1_maxrand_03.txt, part1/part1_maxrand_04.txt, part1/part1_maxrand_05.txt, part1/part1_maxrand_06.txt, part1/part1_maxrand_07.txt, part1/part1_maxrand_08.txt, part1/part1_maxrand_09.txt, part1/part1_maxrand_10.txt, part1/part1_maxrand_11.txt, part1/part1_maxrand_12.txt, part1/part1_maxrand_13.txt, part1/part1_maxrand_14.txt, part1/part1_rand1_00.txt, part1/part1_rand1_01.txt, part1/part1_rand1_02.txt, part1/part1_rand1_03.txt, part1/part1_rand2_00.txt, part1/part1_rand2_01.txt, part1/part1_rand2_02.txt, part1/part1_rand2_03.txt, part1/part1_rand2_04.txt, part1/part1_rand2_05.txt, part1/part1_rand2_06.txt, part1/part1_rand2_07.txt, part1/part1_rand2_08.txt, part1/part1_rand2_09.txt
part2 part2/part2_00_sample_02.txt, part2/part2_00_sample_03.txt, part2/part2_maxrand_00.txt, part2/part2_maxrand_01.txt, part2/part2_maxrand_02.txt, part2/part2_maxrand_03.txt, part2/part2_maxrand_04.txt, part2/part2_maxrand_05.txt, part2/part2_maxrand_06.txt, part2/part2_maxrand_07.txt, part2/part2_maxrand_08.txt, part2/part2_maxrand_09.txt, part2/part2_maxrand_10.txt, part2/part2_maxrand_11.txt, part2/part2_maxrand_12.txt, part2/part2_maxrand_13.txt, part2/part2_maxrand_14.txt, part2/part2_rand1_00.txt, part2/part2_rand1_01.txt, part2/part2_rand1_02.txt, part2/part2_rand1_03.txt, part2/part2_rand2_00.txt, part2/part2_rand2_01.txt, part2/part2_rand2_02.txt, part2/part2_rand2_03.txt, part2/part2_rand2_04.txt, part2/part2_rand2_05.txt, part2/part2_rand2_06.txt, part2/part2_rand2_07.txt, part2/part2_rand2_08.txt, part2/part2_rand2_09.txt
part3 part1/part1_00_sample_00.txt, part1/part1_00_sample_01.txt, part1/part1_maxrand_00.txt, part1/part1_maxrand_01.txt, part1/part1_maxrand_02.txt, part1/part1_maxrand_03.txt, part1/part1_maxrand_04.txt, part1/part1_maxrand_05.txt, part1/part1_maxrand_06.txt, part1/part1_maxrand_07.txt, part1/part1_maxrand_08.txt, part1/part1_maxrand_09.txt, part1/part1_maxrand_10.txt, part1/part1_maxrand_11.txt, part1/part1_maxrand_12.txt, part1/part1_maxrand_13.txt, part1/part1_maxrand_14.txt, part1/part1_rand1_00.txt, part1/part1_rand1_01.txt, part1/part1_rand1_02.txt, part1/part1_rand1_03.txt, part1/part1_rand2_00.txt, part1/part1_rand2_01.txt, part1/part1_rand2_02.txt, part1/part1_rand2_03.txt, part1/part1_rand2_04.txt, part1/part1_rand2_05.txt, part1/part1_rand2_06.txt, part1/part1_rand2_07.txt, part1/part1_rand2_08.txt, part1/part1_rand2_09.txt, part2/part2_00_sample_02.txt, part2/part2_00_sample_03.txt, part2/part2_maxrand_00.txt, part2/part2_maxrand_01.txt, part2/part2_maxrand_02.txt, part2/part2_maxrand_03.txt, part2/part2_maxrand_04.txt, part2/part2_maxrand_05.txt, part2/part2_maxrand_06.txt, part2/part2_maxrand_07.txt, part2/part2_maxrand_08.txt, part2/part2_maxrand_09.txt, part2/part2_maxrand_10.txt, part2/part2_maxrand_11.txt, part2/part2_maxrand_12.txt, part2/part2_maxrand_13.txt, part2/part2_maxrand_14.txt, part2/part2_rand1_00.txt, part2/part2_rand1_01.txt, part2/part2_rand1_02.txt, part2/part2_rand1_03.txt, part2/part2_rand2_00.txt, part2/part2_rand2_01.txt, part2/part2_rand2_02.txt, part2/part2_rand2_03.txt, part2/part2_rand2_04.txt, part2/part2_rand2_05.txt, part2/part2_rand2_06.txt, part2/part2_rand2_07.txt, part2/part2_rand2_08.txt, part2/part2_rand2_09.txt, part3/part3_maxrand_00.txt, part3/part3_maxrand_01.txt, part3/part3_maxrand_02.txt, part3/part3_maxrand_03.txt, part3/part3_maxrand_04.txt, part3/part3_maxrand_05.txt, part3/part3_maxrand_06.txt, part3/part3_maxrand_07.txt, part3/part3_maxrand_08.txt, part3/part3_maxrand_09.txt, part3/part3_maxrand_10.txt, part3/part3_maxrand_11.txt, part3/part3_maxrand_12.txt, part3/part3_maxrand_13.txt, part3/part3_maxrand_14.txt, part3/part3_rand1_00.txt, part3/part3_rand1_01.txt, part3/part3_rand1_02.txt, part3/part3_rand1_03.txt, part3/part3_rand2_00.txt, part3/part3_rand2_01.txt, part3/part3_rand2_02.txt, part3/part3_rand2_03.txt, part3/part3_rand2_04.txt, part3/part3_rand2_05.txt, part3/part3_rand2_06.txt, part3/part3_rand2_07.txt, part3/part3_rand2_08.txt, part3/part3_rand2_09.txt
Case Name Status Exec Time Memory
part1/part1_00_sample_00.txt AC 13 ms 5380 KB
part1/part1_00_sample_01.txt AC 10 ms 5332 KB
part1/part1_maxrand_00.txt AC 73 ms 7396 KB
part1/part1_maxrand_01.txt AC 72 ms 7384 KB
part1/part1_maxrand_02.txt AC 71 ms 7408 KB
part1/part1_maxrand_03.txt AC 73 ms 7248 KB
part1/part1_maxrand_04.txt AC 72 ms 7352 KB
part1/part1_maxrand_05.txt AC 70 ms 7280 KB
part1/part1_maxrand_06.txt AC 72 ms 7264 KB
part1/part1_maxrand_07.txt AC 71 ms 7316 KB
part1/part1_maxrand_08.txt AC 69 ms 7380 KB
part1/part1_maxrand_09.txt AC 73 ms 7284 KB
part1/part1_maxrand_10.txt AC 73 ms 7324 KB
part1/part1_maxrand_11.txt AC 71 ms 7364 KB
part1/part1_maxrand_12.txt AC 72 ms 7292 KB
part1/part1_maxrand_13.txt AC 73 ms 7284 KB
part1/part1_maxrand_14.txt AC 72 ms 7240 KB
part1/part1_rand1_00.txt AC 9 ms 6084 KB
part1/part1_rand1_01.txt AC 8 ms 5684 KB
part1/part1_rand1_02.txt AC 11 ms 6380 KB
part1/part1_rand1_03.txt AC 8 ms 6344 KB
part1/part1_rand2_00.txt AC 54 ms 6944 KB
part1/part1_rand2_01.txt AC 27 ms 6044 KB
part1/part1_rand2_02.txt AC 61 ms 7260 KB
part1/part1_rand2_03.txt AC 68 ms 7372 KB
part1/part1_rand2_04.txt AC 25 ms 6092 KB
part1/part1_rand2_05.txt AC 34 ms 6412 KB
part1/part1_rand2_06.txt AC 39 ms 6376 KB
part1/part1_rand2_07.txt AC 16 ms 5764 KB
part1/part1_rand2_08.txt AC 18 ms 5948 KB
part1/part1_rand2_09.txt AC 21 ms 6036 KB
part2/part2_00_sample_02.txt AC 17 ms 5400 KB
part2/part2_00_sample_03.txt AC 19 ms 5404 KB
part2/part2_maxrand_00.txt AC 67 ms 7424 KB
part2/part2_maxrand_01.txt AC 9 ms 5452 KB
part2/part2_maxrand_02.txt AC 63 ms 7352 KB
part2/part2_maxrand_03.txt AC 87 ms 7384 KB
part2/part2_maxrand_04.txt AC 80 ms 7240 KB
part2/part2_maxrand_05.txt AC 215 ms 7268 KB
part2/part2_maxrand_06.txt AC 36 ms 7380 KB
part2/part2_maxrand_07.txt AC 124 ms 7424 KB
part2/part2_maxrand_08.txt AC 52 ms 7264 KB
part2/part2_maxrand_09.txt AC 7 ms 5268 KB
part2/part2_maxrand_10.txt AC 68 ms 7284 KB
part2/part2_maxrand_11.txt AC 8 ms 5384 KB
part2/part2_maxrand_12.txt AC 216 ms 7288 KB
part2/part2_maxrand_13.txt AC 54 ms 7384 KB
part2/part2_maxrand_14.txt AC 8 ms 5404 KB
part2/part2_rand1_00.txt AC 7 ms 5984 KB
part2/part2_rand1_01.txt AC 7 ms 6016 KB
part2/part2_rand1_02.txt AC 6 ms 6072 KB
part2/part2_rand1_03.txt AC 9 ms 6356 KB
part2/part2_rand2_00.txt AC 53 ms 7176 KB
part2/part2_rand2_01.txt AC 41 ms 7116 KB
part2/part2_rand2_02.txt AC 42 ms 7052 KB
part2/part2_rand2_03.txt AC 37 ms 7316 KB
part2/part2_rand2_04.txt AC 27 ms 7124 KB
part2/part2_rand2_05.txt AC 85 ms 7148 KB
part2/part2_rand2_06.txt AC 56 ms 7164 KB
part2/part2_rand2_07.txt AC 80 ms 7288 KB
part2/part2_rand2_08.txt AC 198 ms 7184 KB
part2/part2_rand2_09.txt AC 93 ms 7248 KB
part3/part3_maxrand_00.txt AC 72 ms 7392 KB
part3/part3_maxrand_01.txt AC 10 ms 5416 KB
part3/part3_maxrand_02.txt AC 70 ms 7364 KB
part3/part3_maxrand_03.txt AC 87 ms 7352 KB
part3/part3_maxrand_04.txt AC 84 ms 7240 KB
part3/part3_maxrand_05.txt AC 229 ms 7360 KB
part3/part3_maxrand_06.txt AC 37 ms 7420 KB
part3/part3_maxrand_07.txt AC 130 ms 7284 KB
part3/part3_maxrand_08.txt AC 55 ms 7296 KB
part3/part3_maxrand_09.txt AC 8 ms 5456 KB
part3/part3_maxrand_10.txt AC 69 ms 7212 KB
part3/part3_maxrand_11.txt AC 7 ms 5268 KB
part3/part3_maxrand_12.txt AC 234 ms 7400 KB
part3/part3_maxrand_13.txt AC 53 ms 7260 KB
part3/part3_maxrand_14.txt AC 9 ms 5320 KB
part3/part3_rand1_00.txt AC 5 ms 5968 KB
part3/part3_rand1_01.txt AC 9 ms 6092 KB
part3/part3_rand1_02.txt AC 6 ms 5968 KB
part3/part3_rand1_03.txt AC 10 ms 6348 KB
part3/part3_rand2_00.txt AC 56 ms 7060 KB
part3/part3_rand2_01.txt AC 46 ms 7220 KB
part3/part3_rand2_02.txt AC 40 ms 7128 KB
part3/part3_rand2_03.txt AC 34 ms 7420 KB
part3/part3_rand2_04.txt AC 33 ms 7160 KB
part3/part3_rand2_05.txt AC 87 ms 7148 KB
part3/part3_rand2_06.txt AC 54 ms 7216 KB
part3/part3_rand2_07.txt AC 84 ms 7204 KB
part3/part3_rand2_08.txt AC 214 ms 7188 KB
part3/part3_rand2_09.txt AC 91 ms 7208 KB


2025-04-06 (Sun)
02:11:05 +00:00