#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
int n;
cin >> n;
vector<pair<int, int>> range(n);
for (int i = 0; i < n; ++i)
cin >> range[i].first >> range[i].second;
int total = 0;
for (int mask = 1; mask < (1 << n); ++mask) {
vector<int> idx;
for (int i = 0; i < n; ++i)
if (mask & (1 << i))
idx.push_back(i);
int count = 1;
int prev_max = range[idx[0]].second;
int ways = 0;
// Brute-force all valid increasing assignments
function<void(int, int)> dfs = [&](int pos, int prev) {
if (pos == idx.size()) {
ways++;
return;
}
int i = idx[pos];
for (int val = range[i].first; val <= range[i].second; ++val) {
if (val > prev)
dfs(pos + 1, val);
}
};
dfs(0, -1);
total += ways;
}
cout << total << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |