Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <queue>
- #include <vector>
- #include <cstdlib>
- #include <fstream>
- #include <iterator>
- #include <algorithm>
- using namespace std;
- deque< int > pQ;
- vector< int > v;
- int getNrBits( int x )
- {
- int i, nr=0;
- for( i=1; i <= x; i<<=1 )
- if( x&i )
- ++nr;
- return nr;
- }
- int main( void )
- {
- int N, K, i, s, nr;
- ifstream in( "secvb.in" );
- in>>N>>K;
- copy( istream_iterator<int>(in), istream_iterator<int>(), back_inserter(v) ); //citirea datelor
- for( i=0; i < N; ++i )
- v[i]=getNrBits(v[i]); //obtin numarul de bits
- for( nr=s=i=0; i < N; ++i )
- {
- s+=v[i]; //fac suma
- pQ.push_back(v[i]); //si bag intr-un deque
- if( K == s )
- ++nr;
- else if( s > K )
- {
- while( s >= K ) //fiind mai mare ca si K, scad din el primelele elemente din deque
- {
- s-=pQ.front();
- pQ.pop_front();
- if( K == s ) //daca am dat de o secventa egala
- ++nr;
- }
- }
- }
- ofstream out( "secvb.out" );
- out<<nr<<'\n'; //afisare
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement