a53

memory0006

a53
Jan 2nd, 2017
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream f("memory006.in");
  4. ofstream g("memory006.out");
  5. long long n,k,i,suma,nr,x,st,dr,p[60];
  6. long mij;
  7. char a[10001],t,j;
  8.  
  9. char exp(long s,long d)
  10. {
  11. if(s>d) return 0;
  12. mij=(s+d)/2;
  13. if(x==p[mij])
  14. return mij;
  15. if(x<p[mij])
  16. return exp(s,mij-1);
  17. else
  18. return exp(mij+1,d);
  19. }
  20.  
  21. int main()
  22. {
  23. f>>n>>k;
  24. p[1]=2;
  25. for(i=2;i<=57;++i)
  26. p[i]=p[i-1]*2;
  27. nr=0;
  28. suma=0;
  29. st=0;
  30. dr=-1 ;
  31. for(i=0;i<n;++i)
  32. {
  33. f>>x;
  34. t=exp(1,57);
  35. if(t==0)
  36. {
  37. suma=0;
  38. st=0;
  39. dr=-1;
  40. }
  41. else
  42. {
  43. dr=(dr+1)%10001;
  44. a[dr]=t ;
  45. suma=suma+t;
  46. if(suma>=k)
  47. {
  48. if(suma==k)
  49. ++nr;
  50. else
  51. {
  52. while(suma>k)
  53. {
  54. suma=suma-a[st];
  55. st=(st+1)%10001;
  56. }
  57. if(suma==k)
  58. ++nr;
  59. }
  60. }
  61. }
  62. }
  63. g<<nr;
  64. return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment