Advertisement
a53

secvb

a53
Dec 26th, 2019
163
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.  
  8. using namespace std;
  9. deque< int > pQ;
  10. vector< int > v;
  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. int main( void )
  20. {
  21. int N, K, i, s, nr;
  22. ifstream in( "secvb.in" );
  23. in>>N>>K;
  24. copy( istream_iterator<int>(in), istream_iterator<int>(), back_inserter(v) ); //citirea datelor
  25. for( i=0; i < N; ++i )
  26. v[i]=getNrBits(v[i]); //obtin numarul de bits
  27. for( nr=s=i=0; i < N; ++i )
  28. {
  29. s+=v[i]; //fac suma
  30. pQ.push_back(v[i]); //si bag intr-un deque
  31. if( K == s )
  32. ++nr;
  33. else if( s > K )
  34. {
  35. while( s >= K ) //fiind mai mare ca si K, scad din el primelele elemente din deque
  36. {
  37. s-=pQ.front();
  38. pQ.pop_front();
  39. if( K == s ) //daca am dat de o secventa egala
  40. ++nr;
  41. }
  42. }
  43. }
  44. ofstream out( "secvb.out" );
  45. out<<nr<<'\n'; //afisare
  46. return EXIT_SUCCESS;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement