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 |
|
|
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 |