fork download
  1. // Lower Bound + Upper Bound
  2. #pragma GCC optimize("Ofast")
  3. #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma")
  4. #pragma GCC optimize("unroll-loops")
  5. /***
  6. ** Author: Rois Uddin Khan Emon
  7. ** Bangladesh University of Business and Technology
  8. ** Dept. of CSE.
  9. *** version: 0.0
  10. ***/
  11.  
  12. #include <stdio.h>
  13. #include <iostream>
  14. #include <sstream>
  15. #include <string.h>
  16. #include <string>
  17. #include <cwctype>
  18. #include <math.h>
  19. #include <vector>
  20. #include <iterator>
  21. #include <map>
  22. #include <set>
  23. #include <stack>
  24. #include <algorithm>
  25.  
  26. #define pb push_back
  27. #define Sqr(n) (n * n)
  28. #define Sort(v) sort(v.begin(), v.end())
  29. #define Mxe(v) *max_element(v.begin(), v.end())
  30. #define Mne(v) *min_element(v.begin(), v.end())
  31. #define Fin freopen("input.txt","r", stdin)
  32. #define Fout freopen("output.txt","w", stdout)
  33.  
  34. using namespace std;
  35.  
  36. typedef long long ll;
  37. typedef long long int lli;
  38. typedef unsigned long long ull;
  39. const double PI = acos(-1.0);
  40. const lli maxn = 1e5+7;
  41.  
  42. template <typename T> T Abs(T a) { if (a < 0) return -a; else return a; }
  43. template <typename T> T BigMod(T b, T p, T m) { if (p == 0) return 1; if (p % 2 == 0) { T s = BigMod(b, p / 2, m); return ((s % m) * (s % m)) % m; } return ((b % m) * (BigMod(b, p - 1, m) % m)) % m; }
  44. template <typename T> T Pow(T B,T P){ if(P==0) return 1; if(P&1) return B*Pow(B,P-1); else return Sqr(Pow(B,P/2));}
  45. template <typename T> T gcd(T a,T b){if(a<0)return gcd(-a,b);if(b<0)return gcd(a,-b);return (b==0)?a:gcd(b,a%b);}
  46. template <typename T> T lcm(T a,T b) {if(a<0)return lcm(-a,b);if(b<0)return lcm(a,-b);return a*(b/gcd(a,b));}
  47.  
  48. char uplowch(char ch){if(ch >= 'A' && ch <= 'Z') ch += 32; return ch;}
  49. char lowupch(char ch){if(ch >= 'a' && ch <= 'z') ch -= 32; return ch;}
  50. string intostr(int x){stringstream ss; ss << x; string str = ss.str(); return str;}
  51.  
  52. #define MOD 1000000007
  53. #define MAX -1000000007
  54. #define MIN 1000000007
  55.  
  56. int main(){
  57. int n;
  58. lli x;
  59. cin>>n>>x;
  60. lli arr[n];
  61. for(int i = 0; i<n; i++){
  62. lli val;
  63. cin>>val;
  64. i!=0 ? arr[i] = arr[i-1]+val: arr[i] = val;
  65. }
  66. int count = 0;
  67. int idx = lower_bound(arr, arr+n, x)-arr;
  68. if(arr[idx]==x){
  69. count++;
  70. }
  71. for(int i = idx+1; i<n; i++){
  72. int index = lower_bound(arr, arr+n, arr[i]-x)-arr;
  73. if(arr[index]==(arr[i]-x)){
  74. count++;
  75. }
  76. }
  77. cout<<count<<endl;
  78.  
  79. return 0;
  80. }
Success #stdin #stdout 0.01s 5276KB
stdin
5 7
2 4 1 2 7
stdout
3