Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- int n;
- cin>>n;
- vector<int> a(n);
- for (int i = 0; i<n; i++) cin>>a[i];
- vector<vector<pair<int, int>>> dp(20);
- int cur = 1;
- for (int i = 0; i<n; i++) dp[0].push_back(make_pair(a[i], 0));
- for (int deg = 1; deg<20; deg++)
- {
- cur*=2;
- for (int i = 0; i+cur<=n; i++)
- {
- int left1 = dp[deg-1][i].first;
- int left2 = dp[deg-1][i+cur/2].first;
- int candies1 = dp[deg-1][i].second;
- int candies2 = dp[deg-1][i+cur/2].second;
- int res_candies = candies1 + candies2;
- int res_left = (left1 + left2)%10;
- if (left1+left2>=10) res_candies++;
- dp[deg].push_back(make_pair(res_left, res_candies));
- }
- }
- int q;
- cin>>q;
- int l, r;
- for (int i = 0; i<q; i++)
- {
- cin>>l>>r;
- int len = (r-l+1);
- int deg = 0;
- while (len%2==0) {deg++; len/=2;}
- cout<<dp[deg][l-1].second<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement