Advertisement
a53

secvb

a53
Dec 13th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. #include <queue>
  2. #include <vector>
  3. #include <cstdlib>
  4. #include <fstream>
  5. #include <iterator>
  6. #include <algorithm>
  7. using namespace std;
  8. deque< int > pQ;
  9. vector< int > v;
  10.  
  11. int getNrBits( int x )
  12. {
  13. int i, nr=0;
  14. for( i=1; i <= x; i<<=1 )
  15. if( x&i )
  16. ++nr;
  17. return nr;
  18. }
  19.  
  20. int main( void )
  21. {
  22. int N, K, i, s, nr;
  23. ifstream in( "secvb.in" );
  24. in>>N>>K;
  25. copy( istream_iterator<int>(in), istream_iterator<int>(), back_inserter(v) ); //citirea datelor
  26. for( i=0; i < N; ++i )
  27. v[i]=getNrBits(v[i]); //obtin numarul de bits
  28. for( nr=s=i=0; i < N; ++i )
  29. {
  30. s+=v[i]; //fac suma
  31. pQ.push_back(v[i]); //si bag intr-un deque
  32. if( K == s )
  33. ++nr;
  34. else if( s > K )
  35. {
  36. while( s >= K ) //fiind mai mare ca si K, scad din el primelele elemente din deque
  37. {
  38. s-=pQ.front();
  39. pQ.pop_front();
  40. if( K == s ) //daca am dat de o secventa egala
  41. ++nr;
  42. }
  43. }
  44. }
  45. ofstream out( "secvb.out" );
  46. out<<nr<<'\n'; //afisare
  47. return EXIT_SUCCESS;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement