/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 320.0 KiB
#2 Accepted 11ms 580.0 KiB
#3 Accepted 6ms 568.0 KiB
#4 Accepted 5ms 568.0 KiB
#5 Accepted 17ms 320.0 KiB
#6 Accepted 17ms 380.0 KiB

Code

// PIPRA ||  HABIB
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>

using namespace __gnu_pbds;
using namespace std;

#define int        long long int
#define pb         push_back
#define all(x)     x.begin(),x.end()
#define allr(x)    x.rbegin(),x.rend()
#define ii         pair<int,int>
#define endl       "\n"

template<typename T>
ostream& operator<<(ostream &os, const vector<T> &v) {
    os << '{';
    for (const auto &x : v) os << " " << x;
        return os << '}';
}
using orderedTree = tree<int, null_type, less<int>, 
rb_tree_tag, tree_order_statistics_node_update>;

void pipra(){
    int n;  cin >> n;
    int odd = 0, even = 0;
    for(int i=0 ; i<n ; i++){
        int x;  cin >> x;
        odd += (x & 1);
        even += (!(x & 1));
    }

    bool c = true;
    int times;
    int op = min(odd, even) / 2;
    op *= 2;
    odd -= op;
    even -= op;
    times = op/2;
    
    int a, b;
    if(times & 1)   a = even, b = odd;
    else            a = odd, b = even;

    // cout << a << ' ' << b << endl;
    // odd-odd-case
    int operation = 0;
    for(int i=0 ; i<8 ; i++){
        if(i%2 == 1){
            b--;
            if(b < 0){  c = false;  break; }
            b--;
            if(b < 0)   break;
        }
        else{
            a--;
            if(a < 0){  c = false;  break; }
            a--;
            if(a < 0)   break;
        }
    }

    if(times & 1)   a = even, b = odd;
    else            a = odd, b = even;
    
    // odd-even case
    for(int i=0 ; i<8 ; i++){
        if(i%2 == 1){
            b--;
            if(b < 0){  c = false;  break; }
            a--;
            if(a < 0)   break;
        }
        else{
            a--;
            if(a < 0){  c = false;  break; }
            b--;
            if(b < 0)   break;
        }
    }

    if(c){
        cout << "Roy" << endl;
        return;
    }

    c = true;
    if(times & 1)   a = odd, b = even;
    else            a = even, b = odd;

    // even-even case
    for(int i=0 ; i<8 ; i++){
        if(i%2 == 1){
            b--;
            if(b < 0){  c = false;  break; }
            b--;
            if(b < 0)   break;
        }
        else{
            a--;
            if(a < 0){  c = false;  break; }
            a--;
            if(a < 0)   break;
        }
    }
    if(times & 1)   a = odd, b = even;
    else            a = even, b = odd;
    // even-odd case
    for(int i=0 ; i<8 ; i++){
        if(i%2 == 1){
            b--;
            if(b < 0){  c = false;  break; }
            a--;
            if(a < 0)   break;
        }
        else{
            a--;
            if(a < 0){  c = false;  break; }
            b--;
            if(b < 0)   break;
        }
    }

    if(c){
        cout << "Roy" << endl;
        return;
    }

    cout << "Hridoy" << endl;
}

int32_t main(){
    // HABIB
    ios_base::sync_with_stdio(false); 
    cin.tie(NULL); cout.tie(NULL);

    int t;    cin>>t;
    while(t--) {
        pipra();
    }
    return 0 ;
}

Information

Submit By
Type
Submission
Problem
P1102 Odd-Even Game
Contest
Brain Booster #6
Language
C++17 (G++ 13.2.0)
Submit At
2024-10-03 16:48:01
Judged At
2024-12-17 11:33:59
Judged By
Score
100
Total Time
17ms
Peak Memory
580.0 KiB