Submission #35666

#TimeUsernameProblemLanguageResultExecution timeMemory
35666funcsrBoat (APIO16_boat)C++14
31 / 100
276 ms524288 KiB
#include <cstdio> #include <iostream> #include <algorithm> #include <string> #include <cstring> #include <vector> #include <queue> #include <set> #include <map> #include <cmath> #include <iomanip> #include <cassert> #include <bitset> using namespace std; typedef pair<int, int> P; #define rep(i, n) for (int i=0; i<(n); i++) #define all(c) (c).begin(), (c).end() #define uniq(c) c.erase(unique(all(c)), (c).end()) #define index(xs, x) (int)(lower_bound(all(xs), x) - xs.begin()) #define _1 first #define _2 second #define pb push_back #define INF 1145141919 #define MOD 1000000007 inline void add(int &x, int v) { x += v; if (x >= MOD) x -= MOD; } struct BIT { int n; vector<int> xs; BIT(int n) : n(n) { xs.resize(n+1); } void addV(int i, int v) { for (int x=i+1; x<=n; x+=x&-x) add(xs[x], v); } int sum(int i) { int s = 0; for (int x=i+1; x>0; x-=x&-x) add(s, xs[x]); return s; } }; int N; int A[500], B[500]; signed main() { ios::sync_with_stdio(false); cin.tie(0); cin >> N; vector<int> xs; xs.pb(0); rep(i, N) { cin >> A[i] >> B[i]; for (int x=A[i]; x<=B[i]; x++) xs.pb(x); } sort(all(xs)); uniq(xs); BIT bit(xs.size()); bit.addV(0, 1); rep(i, N) { int p = lower_bound(all(xs), B[i]) - xs.begin(); for (int x=B[i]; x>=A[i]; x--) { bit.addV(p, bit.sum(p-1)); p--; } } int s = bit.sum(xs.size()-1); add(s, MOD-1); cout << s << "\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...