sandeep03edu

Google Count Pair

Jul 9th, 2022 (edited)
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #pragma GCC target ("avx2")
  5. #pragma GCC optimization ("O3")
  6. #pragma GCC optimization ("unroll-loops")
  7. #define ll  long long
  8.  
  9. // typedef tree<ll, null_type, less_equal<ll>, rb_tree_tag, tree_order_statistics_node_update> pbds;
  10. // find_by_order, order_of_key
  11.  
  12. void solve(vector<ll> a, vector<ll> b, ll c, ll d);
  13.  
  14. int main() {
  15.     ios_base::sync_with_stdio(false);
  16.     cin.tie(NULL);
  17.     cout.tie(NULL);
  18.  
  19.     ll t;
  20.     t=1;
  21.     // cin>>t;
  22.     while(t--){
  23.         solve({4,2,3,11, 6}, {1,2,2, 5, 4}, 1, 2);
  24.     }
  25.  
  26.     return 0;
  27. }
  28.  
  29. void solve(vector<ll> a, vector<ll> b, ll c, ll d){
  30.     ll n = a.size();
  31.     ll dcd = d-c;
  32.    
  33.     vector<ll> diff(n), diffS(n);
  34.    
  35.     for(ll i=0; i<n; ++i){
  36.         diff[i] = a[i]-b[i];
  37.         diffS[i] = diff[i];
  38.     }
  39.    
  40.     sort(diffS.begin(), diffS.end());
  41.  
  42.     ll ct=0;
  43.    
  44.     for(int i=0; i<n-1; ++i){
  45.         ll num = diff[i];
  46.        
  47.         ll pos = lower_bound(diffS.begin(), diffS.end(), num) - diffS.begin();
  48.        
  49.         diffS.erase(diffS.begin() + pos);
  50.        
  51.         ll k = upper_bound(diffS.begin(), diffS.end(), num-dcd) - diffS.begin();
  52.        
  53.         ll a = diffS.size()-k;
  54.        
  55.         ct += a;
  56.        
  57.     }
  58.  
  59.     cout<<ct<<endl;
  60. }
Add Comment
Please, Sign In to add comment