Submission
Status:
[-SS][PPPP][-SS][-SSSSSS]
Score: 25
User: njoop
Problemset: ขั้นบันได
Language: cpp
Time: 0.125 second
Submitted On: 2024-11-26 23:30:07
#include <bits/stdc++.h>
#define int long long
using namespace std;
int arr[100010], odd[100010], even[100010], n, cur, pre, q, l, r, cnt;
signed main() {
cin >> n >> pre;
for(int i=1; i<n; i++) {
cin >> cur;
int mx = max(cur, pre)-1;
int mn = min(cur, pre)+1;
if(mx-mn <= 0) continue;
arr[mn]++;
arr[mx+1]--;
pre = cur;
}
for(int i=0; i<=100000; i++) {
cnt += arr[i];
if(i%2) {
odd[i] += cnt;
} else {
even[i] += cnt;
}
odd[i] += odd[i-1];
even[i] += even[i-1];
}
cin >> q;
while(q--) {
cin >> l >> r;
if(l == 0) {
cout << even[r] << " " << odd[r] << "\n";
} else {
cout << even[r]-even[l-1] << " " << odd[r]-odd[l-1] << "\n";
}
}
}