Submission

Status:
[PPP][TSSS][TSS][xSSSSSS]

Score: 10

User: ShynyC

Problemset: ขั้นบันได

Language: cpp

Time: 2.080 second

Submitted On: 2025-03-27 23:06:35

#include <iostream>
#include <vector>
using namespace std;
int main(){
    int n,temp,q,floor1,floor2,odd=0,even=0;
    vector<int> rooms,ghost,human;
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> temp;
        rooms.push_back(temp);
    }
    for(int i = 0 ; i < n-1; i++){
        if(abs(rooms[i]-rooms[i+1]) > 1){
            for(int j = 1; j < abs(rooms[i+1]-rooms[i]); j++){
                if(rooms[i] < rooms[i+1]){
                    if((j+rooms[i])%2 == 0){
                        human.push_back(j+rooms[i]);
                    }else{
                        ghost.push_back(j+rooms[i]);
                    }  
                }else{
                    if((j+rooms[i+1])%2 == 0){
                        human.push_back(j+rooms[i+1]);
                    }else{
                        ghost.push_back(j+rooms[i+1]);
                    } 
                }
            }
        }
    }
    //cout << human.size() << ' ' << ghost.size() << "\n";
    cin >> q;
    for(int i = 0; i < q; i++){
        cin >> floor1 >> floor2;
        for(int j = 0; j < human.size(); j++){
            if(human[j] >= floor1 && human[j] <= floor2){
                even++;
            }
        }
        for(int j = 0; j < ghost.size(); j++){
            if(ghost[j] >= floor1 && ghost[j] <= floor2){
                odd++;
            }
        }
        cout << even << ' ' << odd << "\n";
        odd = 0;
        even = 0;
    }
}