Needing help on 165C
Difference between en1 and en2, changed 15 character(s)
I am trying to solve 165C using binary search, but it is getting TLE. Can anyone help?↵

Here's my code:↵
[submission:208389930]↵

<spoiler summary="Code">↵
```c++↵
#include <bits/stdc++.h>↵
using namespace std;↵
using ll = long long;↵

ll n, k;↵
ll pre[100005];↵
string s;↵

ll bs1(ll lo){↵
    ll l = lo, r = n, mid;↵
    while (l <= r){↵
        mid = (l + r) / 2;↵
        if (pre[mid] &mdash; pre[lo-1] <= k){↵
            l = mid + 1;↵
        } else {↵
            r = mid &mdash; 1;↵
        }↵
    }↵
    return r;↵
}↵

ll bs2(ll lo){↵
    ll l = lo, r = n, mid;↵
    while (l <= r){↵
        mid = (l + r) / 2;↵
        if (pre[mid] &mdash; pre[lo-1] >= k){↵
            r = mid &mdash; 1;↵
        } else {↵
            l = mid + 1;↵
        }↵
    }↵
    return l;↵
}↵

signed main(){↵
    ll i, res;↵
    cin >> k >> s;↵
    n = s.size();↵
    s = " " + s;↵
    pre[0] = 0;↵
    for (i = 1; i <= n; i++){↵
        pre[i] = pre[i-1] + s[i] &mdash; '0';↵
    }↵
    res = 0;↵
    for (i = 1; i <= n; i++){↵
        res += bs1(i) &mdash; bs2(i) + 1;↵
    }↵
    cout << res;↵
}↵
```↵
</spoiler>↵

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en3 English rpmdoestuff 2023-06-04 09:41:57 48
en2 English rpmdoestuff 2023-06-04 09:41:06 15
en1 English rpmdoestuff 2023-06-04 09:37:13 1119 Initial revision (published)