Advertisement
sajid161

Class - 22 : Task - 1

Dec 14th, 2024
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #include <ext/pb_ds/assoc_container.hpp>
  4. using namespace __gnu_pbds;
  5. typedef tree< double, null_type, less_equal<double>, rb_tree_tag, tree_order_statistics_node_update > ordered_set;
  6. const int mx=2e5+123;
  7. long long sum0[mx],sum1[mx];
  8. int main()
  9. {
  10.     int q;
  11.     cin>>q;
  12.     for(int j=1;j<=q;j++)
  13.     {
  14.         string s;
  15.         int k;
  16.         ordered_set ps;
  17.         cin>>s>>k;
  18.         sum0[0]=0;
  19.         sum1[0]=0;
  20.         for(int i=0;i<s.size();i++)
  21.         {
  22.             if(s[i]=='0')
  23.             {
  24.                 sum0[i+1]=sum0[i]+1;
  25.                 sum1[i+1]=sum1[i];
  26.             }
  27.             else
  28.             {
  29.                 sum1[i+1]=sum1[i]+1;
  30.                 sum0[i+1]=sum0[i];
  31.             }
  32.  
  33.  
  34.         }
  35.         long long ans=0;
  36.         ps.insert(0);
  37.         map<long long, int>cnt;
  38.         cnt[0]++;
  39.         for(int i=1;i<=s.size();i++)
  40.         {
  41.  
  42.            ans+=ps.order_of_key(sum0[i]-(k*sum1[i]))+cnt[sum0[i]-(k*sum1[i])];
  43.            cnt[sum0[i]-(k*sum1[i])]++;
  44.            ps.insert(sum0[i]-(k*sum1[i]));
  45.            
  46.  
  47.         }
  48.         cout<<ans;
  49.  
  50.  
  51.     }
  52. }
  53.  
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement