Submission #1259032

#TimeUsernameProblemLanguageResultExecution timeMemory
1259032khanhdangiuuBoat (APIO16_boat)C++20
9 / 100
74 ms2116 KiB
#include <bits/stdc++.h> using namespace std; const int MOD = 1'000'000'007; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector<long long> a(N), b(N); vector<long long> vals; for (int i = 0; i < N; i++) { cin >> a[i] >> b[i]; vals.push_back(a[i]); vals.push_back(b[i]); } // nén toạ độ sort(vals.begin(), vals.end()); vals.erase(unique(vals.begin(), vals.end()), vals.end()); int M = vals.size(); vector<vector<int>> dp(N, vector<int>(M, 0)); long long ans = 0; for (int i = 0; i < N; i++) { // prefix sum của tất cả dp[j] với j < i vector<int> prefix(M, 0); if (i > 0) { for (int k = 0; k < M; k++) { long long sum = 0; for (int j = 0; j < i; j++) sum += dp[j][k]; prefix[k] = sum % MOD; } for (int k = 1; k < M; k++) { prefix[k] = (prefix[k] + prefix[k-1]) % MOD; } } // gán giá trị cho dp[i] for (int k = 0; k < M; k++) { if (vals[k] < a[i] || vals[k] > b[i]) continue; long long ways = 1; // khởi đầu (chỉ riêng trường này gửi) if (i > 0 && k > 0) ways += prefix[k-1]; dp[i][k] = ways % MOD; ans = (ans + dp[i][k]) % MOD; } } cout << ans % MOD << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...