Submission #67657700


Source Code Expand

#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>

using namespace std;

// The modulus for the final sum
const int MOD = 998244353;

// Modular exponentiation to compute (base^exp) % MOD
long long power(long long base, long long exp) {
    long long res = 1;
    base %= MOD;
    while (exp > 0) {
        if (exp % 2 == 1) res = (res * base) % MOD;
        base = (base * base) % MOD;
        exp /= 2;
    }
    return res;
}

int main() {
    // Fast I/O
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N;
    long long M;
    cin >> N >> M;

    vector<vector<bool>> is_movie(N + 1, vector<bool>(N + 1, false));
    for (int k = 0; k < M; ++k) {
        int l, r;
        cin >> l >> r;
        is_movie[l][r] = true;
    }
    
    // **FIX 1: Correctly precompute movie counts inside intervals [i, j]**
    vector<vector<int>> movie_counts(N + 2, vector<int>(N + 2, 0));
    for (int i = 1; i <= N; ++i) {
        for (int j = i; j <= N; ++j) {
            int count_ending_at_j = 0;
            for (int l = i; l <= j; ++l) {
                if (is_movie[l][j]) {
                    count_ending_at_j++;
                }
            }
            movie_counts[i][j] = movie_counts[i][j - 1] + count_ending_at_j;
        }
    }
    
    vector<long long> pow2(M + 1);
    pow2[0] = 1;
    for (int i = 1; i <= M; ++i) {
        pow2[i] = (pow2[i - 1] * 2) % MOD;
    }

    // **FIX 2: Use the standard O(N^2) DP recurrence for deficiencies**
    // dp[i][j] will store the sum of deficiencies for movies within interval [i, j]
    vector<vector<long long>> dp(N + 2, vector<long long>(N + 2, 0));

    for (int len = 1; len <= N; ++len) {
        for (int i = 1; i <= N - len + 1; ++i) {
            int j = i + len - 1;
            
            // Base deficiency from the whole interval [i, j] being a conflicting core
            long long h_val = 0;
            if (movie_counts[i][j] > len) {
                // Deficiency = (|s'| - len) * 2^(M-|s'|)
                h_val = (long long)(movie_counts[i][j] - len) * pow2[M - movie_counts[i][j]] % MOD;
            }
            
            // Deficiencies from proper sub-intervals via Principle of Inclusion-Exclusion
            long long sub_deficiencies = (dp[i+1][j] + dp[i][j-1]) % MOD;
            sub_deficiencies = (sub_deficiencies - dp[i+1][j-1] + MOD) % MOD;
            
            dp[i][j] = (h_val + sub_deficiencies) % MOD;
        }
    }
    
    // Total sum = (sum of all |s|) - (sum of all deficiencies)
    long long sum_of_sizes = (M * power(2, M - 1)) % MOD;
    long long total_deficiency = dp[1][N];

    long long final_answer = (sum_of_sizes - total_deficiency + MOD) % MOD;

    cout << final_answer << endl;

    return 0;
}

Submission Info

Submission Time
Task B - Movies
User yosupo
Language C++ 23 (Clang 16.0.6)
Score 0
Code Size 2857 Byte
Status WA
Exec Time 1 ms
Memory 3764 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1000
Status
AC × 2
WA × 2
AC × 6
WA × 22
Set Name Test Cases
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt
Case Name Status Exec Time Memory
00-sample-001.txt AC 1 ms 3464 KiB
00-sample-002.txt AC 1 ms 3600 KiB
00-sample-003.txt WA 1 ms 3448 KiB
00-sample-004.txt WA 1 ms 3492 KiB
01-001.txt AC 1 ms 3552 KiB
01-002.txt AC 1 ms 3480 KiB
01-003.txt WA 1 ms 3476 KiB
01-004.txt WA 1 ms 3540 KiB
01-005.txt WA 1 ms 3356 KiB
01-006.txt WA 1 ms 3524 KiB
01-007.txt WA 1 ms 3536 KiB
01-008.txt WA 1 ms 3532 KiB
01-009.txt WA 1 ms 3536 KiB
01-010.txt WA 1 ms 3604 KiB
01-011.txt WA 1 ms 3764 KiB
01-012.txt AC 1 ms 3604 KiB
01-013.txt AC 1 ms 3688 KiB
01-014.txt WA 1 ms 3564 KiB
01-015.txt WA 1 ms 3596 KiB
01-016.txt WA 1 ms 3688 KiB
01-017.txt WA 1 ms 3648 KiB
01-018.txt WA 1 ms 3588 KiB
01-019.txt WA 1 ms 3728 KiB
01-020.txt WA 1 ms 3588 KiB
01-021.txt WA 1 ms 3500 KiB
01-022.txt WA 1 ms 3588 KiB
01-023.txt WA 1 ms 3548 KiB
01-024.txt WA 1 ms 3592 KiB