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;
}