Paste Search Dynamic
Recent pastes
upper bound
  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define mod 1000000007
  4. using namespace std;
  5.  
  6. ll power(ll a,int n){
  7.  
  8.     ll res = 1;
  9.  
  10.     while(n){
  11.  
  12.         if(n&1){
  13.             res = (res*a)%mod;
  14.             n--;
  15.         }
  16.  
  17.         a = (a*a)%mod;
  18.         n >>= 1;
  19.     }
  20.  
  21.     return res;
  22.  
  23. }
  24.  
  25. int main(){
  26.  
  27.     int t;
  28.     cin>>t;
  29.  
  30.     while(t--){
  31.  
  32.         ll n,l,r;
  33.         cin>>n>>l>>r;
  34.  
  35.         vector <ll> v(n);
  36.  
  37.         for(ll i=0;i<n;++i){
  38.             cin>>v[i];
  39.         }
  40.  
  41.         sort(v.begin(),v.end());
  42.         ll ans = 0;
  43.  
  44.         for(ll i:v){
  45.             int len = log10(i) + 1;
  46.             ll d = power(10ll,len);
  47.             ll L = (l-i+d-1ll)/d;
  48.             ll R = (r-i)/d;
  49.             ans += upper_bound(v.begin(),v.end(),R) - lower_bound(v.begin(),v.end(),L);
  50.  
  51.         }
  52.  
  53.         cout<<ans<<endl;
  54.  
  55.     }
  56. }
Parsed in 0.004 seconds