Submission #1310463

#TimeUsernameProblemLanguageResultExecution timeMemory
1310463danglayloi1Boat (APIO16_boat)C++20
9 / 100
4 ms908 KiB
#include <bits/stdc++.h> #define ii pair<int, int> #define fi first #define se second #define inf 0x3f3f3f3f3f3f3f3f using namespace std; using ll = long long; const ll mod=1e9+7; const int nx=1e3+5; int add(int a, int b) { a+=b; if(a>=mod) a-=mod; return a; } int mul(int a, int b) { ll tmp=1ll*a*b; if(tmp>=mod) tmp%=mod; return tmp; } int n, m, bit[nx], tmp[nx]; ii a[nx]; vector<int> rar; void upd(int x, int val) { for(; x <= m; x+=x&-x) bit[x]=add(bit[x], val); } int get(int x) { int res=0; for(; x > 0; x-=x&-x) res=add(res, bit[x]); return res; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i = 1; i <= n; i++) { cin>>a[i].fi>>a[i].se; rar.emplace_back(a[i].fi); rar.emplace_back(a[i].se); rar.emplace_back(a[i].se+1); } sort(rar.begin(), rar.end()); rar.erase(unique(rar.begin(), rar.end()), rar.end()); m=rar.size(); for(int i = 1; i <= n; i++) { a[i].fi=upper_bound(rar.begin(), rar.end(), a[i].fi)-rar.begin(); a[i].se=upper_bound(rar.begin(), rar.end(), a[i].se)-rar.begin(); for(int j = a[i].fi; j <= a[i].se; j++) { int len=rar[j]-rar[j-1]; tmp[j]=mul(len, get(j-1)); tmp[j]=add(tmp[j], 1); } for(int j = a[i].fi; j <= a[i].se; j++) { int len=rar[j]-rar[j-1]; upd(j, tmp[j]); } } cout<<get(m); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...