Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream f("memory006.in");
- ofstream g("memory006.out");
- long long n,k,i,suma,nr,x,st,dr,p[60];
- long mij;
- char a[10001],t,j;
- char exp(long s,long d)
- {
- if(s>d) return 0;
- mij=(s+d)/2;
- if(x==p[mij]) return mij;
- if(x<p[mij]) return exp(s,mij-1);
- else return exp(mij+1,d);
- }
- int main()
- {
- f>>n>>k;
- p[1]=2;
- for(i=2; i<=57; ++i) p[i]=p[i-1]*2;
- nr=0;
- suma=0;
- st=0;
- dr=-1 ;
- for(i=0; i<n; ++i)
- {
- f>>x;
- t=exp(1,57);
- if(t==0)
- {
- suma=0;
- st=0;
- dr=-1;
- }
- else
- {
- dr=(dr+1)%10001;
- a[dr]=t ;
- suma=suma+t;
- if(suma>=k)
- {
- if(suma==k) ++nr;
- else
- {
- while(suma>k)
- {
- suma=suma-a[st];
- st=(st+1)%10001;
- }
- if(suma==k) ++nr;
- }
- }
- }
- }
- g<<nr;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement