Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define in freopen ("input.txt", "r", stdin);
- #define out freopen("output.txt", "w", stdout);
- #define ll long long int
- const int val = (1e6) + 5;
- const ll inf = (1e9) + 7;
- double eps = 0.000000001;
- using namespace std;
- string s;
- long long dp[val], sz[val];
- int ret(int x, int l, int r){
- int m;
- while(l < r){
- m = (l + r) / 2;
- if(dp[m] >= x) r = m;
- else l = m + 1;
- }
- return l;
- }
- long long f(long long x){
- long long st = 1;
- if(x == 1) x = 0;
- while(x > 0){
- st ++;
- x /= 10;
- }
- return st;
- }
- int solve(){
- cin >> s;
- long long t = 0, ans = 0;
- int l = s.size(), r, ln = 0, mz;
- s += '#';
- for(int i=0; i<l; ++i){
- r = i;
- t = 0;
- mz = 1;
- while(isdigit(s[r])){
- t = t * 10 + (s[r] - 48);
- ++ r;
- mz ++;
- }
- t = max(t, 1ll);
- ++ ln;
- dp[ln] = t;
- dp[ln] += dp[ln-1];
- sz[ln] = mz;
- sz[ln] += sz[ln-1];
- i = r;
- }
- int q, l1, l2;
- cin >> q;
- for(int i=0; i<q; ++i){
- long long x, y;
- cin >> x >> y;
- l1 = ret(x, 1, ln);
- l2 = ret(y, 1, ln);
- ans = 0;
- if(l1+1 <= l2-1){
- ans = sz[l2-1] - sz[l1];
- }
- if(l1 == l2) ans += f(y - x + 1);
- else{
- ans += f(dp[l1] - x + 1);
- ans += f(y - dp[l2-1]);
- }
- cout << ans << endl;
- }
- }
- int main(){
- //in out
- ios_base::sync_with_stdio(0);
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement