Submission
Status:
[PPP][PPPP][PPP][PPPPPPP]
Subtask/Task Score:
{10/10}{25/25}{25/25}{40/40}
Score: 100
User: dddrrrr
Problemset: ขั้นบันได
Language: cpp
Time: 0.742 second
Submitted On: 2025-10-17 20:37:09
#include <bits/stdc++.h>
using namespace std;
int main(){
cin.tie(0)->sync_with_stdio(0);
cout.tie(0)->sync_with_stdio(0);
int n;
cin >> n;
vector <int> vec(n);
int sz = INT_MIN;
for(int i=0 ;i<n ;i++){
cin >> vec[i];
sz = max(sz ,vec[i]);
}
vector <int> chk(sz+3 ,0);
for(int i=1 ;i<n ;i++){
int mx = max(vec[i-1] ,vec[i]);
int mn = min(vec[i-1] ,vec[i]);
chk[mn+1]++;
chk[mx]--;
}
for(int i=1 ;i<chk.size() ;i++)chk[i] += chk[i-1];
//for(int i=0 ;i<chk.size() ;i++)cout << i << ' ' << chk[i] <<"\n";
int q;
cin >> q;
while(q--){
int l ,r;
cin >> l >> r;
int odd=0 ,even=0 ;
for(int i=l ;i<=r && i<=sz ;i++){
//cout << i << ' ' << chk[i] << "\n";
if(i % 2 != 0)odd += chk[i];
else even += chk[i];
}
cout << even << ' ' << odd << "\n" ;
}
return 0;
}