Submission #733000

#TimeUsernameProblemLanguageResultExecution timeMemory
733000SanguineChameleonBoat (APIO16_boat)C++17
0 / 100
121 ms460 KiB
#include <bits/stdc++.h> using namespace std; void just_do_it(); int main() { #ifdef KAMIRULEZ freopen("kamirulez.inp", "r", stdin); freopen("kamirulez.out", "w", stdout); #endif ios_base::sync_with_stdio(0); cin.tie(0); just_do_it(); return 0; } const int maxn = 5e2 + 20; const long long mod = 1e9 + 7; bool flag[maxn]; long long cur[maxn]; long long nxt[maxn]; int n; void trans() { for (int i = 1; i <= n; i++) { nxt[i] = cur[i]; if (flag[i]) { nxt[i] = (nxt[i] + 1) % mod; } } for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { if (flag[j]) { nxt[j] = (nxt[j] + cur[i]) % mod; } } } swap(cur, nxt); } void just_do_it() { cin >> n; vector<pair<int, int>> events; for (int i = 1; i <= n; i++) { int a, b; cin >> a >> b; events.emplace_back(a, i); events.emplace_back(b + 1, -i); } sort(events.begin(), events.end()); int cur_t = 0; for (auto e: events) { int nxt_t = e.first; int id = e.second; if (cur_t < nxt_t - 1) { cur_t = nxt_t - 1; } if (id > 0) { flag[id] = true; } else { flag[-id] = false; } if (cur_t == nxt_t - 1) { trans(); cur_t = nxt_t; } } long long res = 0; for (int i = 1; i <= n; i++) { res += cur[i]; res %= mod; } cout << res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...