Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- vector < ll > arr ;
- #define MOD 1000000007
- ll bigmod (ll b, ll p)
- {
- if ( p== 0 ) return 1 ;
- if ( p % 2 == 0 )
- {
- ll y = bigmod ( b, p / 2 )%MOD;
- return ( y * y ) % MOD;
- }
- else
- {
- return ( b * bigmod ( b, p - 1 )%MOD ) % MOD;
- }
- }
- map<ll,bool>mp;
- int main()
- {
- freopen("input/input09.txt","r",stdin);
- freopen("output/output09.txt","w",stdout);
- int n,q;
- cin >> n >>q ;
- assert(2<=n && n<=100000);
- for( int i = 0 ; i < n ; i ++ )
- {
- ll x, y ;
- cin >> x >> y ;
- assert(-1000000000<=x && x<=1000000000);
- assert(-1000000000<=y && y<=1000000000);
- assert(mp[x]==0);
- mp[x]=1;
- arr.push_back(x);
- }
- sort(arr.begin(),arr.end());
- ll ans = 0 ;
- while(q--)
- {
- int l, r ;
- cin >> l >> r ;
- assert(-1000000000<=l && l<=1000000000);
- assert(-1000000000<=r && r<=1000000000);
- if (l >=r )
- {
- ans = 0 ;
- }
- else
- {
- ll x = lower_bound(arr.begin(),arr.end(),l) - arr.begin();
- ll y = upper_bound(arr.begin(),arr.end(),r) - arr.begin();
- ll z=y-x-2;
- if(z>1)
- ans = bigmod(2,z) - 2 ;
- }
- cout << (ans+MOD)%MOD << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement