Jeremiah_

Sanduiche - Neps

Apr 9th, 2019
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define forn(l, r) for(int i = l; i < (r); ++i)
  4. #define TAM 1000100
  5. #define SYNC ios::sync_with_stdio(0);
  6. #define $ << ' ' <<
  7. #define F first
  8. #define S second
  9. #define endl << '\n'
  10.  
  11.  
  12. using namespace std;
  13.  
  14. using ll = long long int;
  15. using ii = pair<int, int>;
  16. using vii = vector<ii>;
  17. using vi = vector<int>;
  18. using graph = vector<vi>;
  19. const int INF = 0x3f3f3f3f;
  20. const int MAXN = 112345;
  21. const ll mod = 1000000007;
  22.  
  23. int sum[TAM], san[TAM];
  24. int sufixsum[TAM];
  25.  
  26. int bin_search(int l, int r, int val) {
  27.     int mid = 0;
  28.     while (l <= r) {
  29.         if (sum[(l+r)/2] >= val) {
  30.             mid = (l+r)/2;
  31.             r = mid-1;
  32.         } else {
  33.             l = (l+r)/2+1;
  34.         }
  35.     }
  36.     return sum[mid] == val ? mid : -1;
  37. }
  38.  
  39.  
  40. int main() {
  41.     SYNC
  42.     int n, d, pairs = 0, soma=0;
  43.     cin >> n >> d;
  44.     forn (0, n) {
  45.         cin >> san[i];
  46.         soma += san[i];
  47.         sum[i] = soma;
  48.     }
  49.     soma = 0;
  50.     for (int i = n-1; i >= 0; --i) {
  51.         soma += san[i];
  52.         sufixsum[i] = soma;
  53.     }
  54.  
  55.  
  56.     forn (0, n) {
  57.         if (!i) {
  58.             if(bin_search(i, n-1, d)+1) {
  59.                 pairs++;
  60.             }
  61.         } else {
  62.             if(bin_search(i, n-1, d+sum[i-1])+1) {
  63.                 pairs++;
  64.             }
  65.         }
  66.     }
  67.     for (int i = n-1; i > 0; --i) {
  68.         if (bin_search(0, i-1, d-sufixsum[i])+1) {
  69.                 pairs++;
  70.             }
  71.     }
  72.     cout << pairs endl;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment