fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. const int N = 1e6 + 100;
  5. ll a[N];
  6. ll n , X;
  7.  
  8. void solve() {
  9.  
  10. ll res = 0;
  11. int j = n , k = n; // con tro thu 2
  12. // j la vi tri lon nhat ma a[i] + a[j] <= x
  13. // k la vi tri nho nhat ma a[i] + a[k] >= x
  14. for (int i = 1 ; i <= n ; i++) {
  15. while (a[i] + a[j] > X) j--;
  16.  
  17. // đảm bảo vị trí k tiếp theo (k - 1) phải thoả mãn đk
  18. // k > i
  19. // a[i] + a[k] >= x
  20. while (k - 1 > i && a[i] + a[k - 1] >= X) k--;
  21. if (i >= j && i >= k) {
  22. break;
  23. }
  24.  
  25. // th dac biet
  26. k = max(k,i + 1);
  27.  
  28.  
  29. // cout << i << " " << k << " " << j << "\n";
  30.  
  31. if (a[i] + a[j] == X && a[i] + a[k] == X) {
  32. res = res + j - k + 1;
  33. }
  34. }
  35.  
  36. cout << res << "\n";
  37.  
  38.  
  39. }
  40.  
  41. int main() {
  42.  
  43.  
  44. cin >> n >> X;
  45. for (int i = 1 ; i <= n ; i++) cin >> a[i];
  46.  
  47. solve();
  48. }
Success #stdin #stdout 0.01s 5320KB
stdin
7 80
70 11 32 43 43 11 54
stdout
0