Click Here to go back to the homepage.

Closing the Loop Solution:


#include <bits/stdc++.h>

using namespace std;

int main(){
    // #ifndef TESTING
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
    // #endif

    int cases;
    cin >> cases;
    for(int i = 1; i < cases + 1; i++){
        int segments;
        cin >> segments;
        priority_queue<int> reds;
        priority_queue<int> blues;
        for(int i = 0; i < segments; i++){
            string seg;
            cin >> seg;
            int len = stoi(seg.substr(0, seg.length() - 1));
            if(seg.at(seg.length() - 1) == 'R'){
                reds.push(len);
            }
            else{
                blues.push(len);
            }
        }
        if(blues.size() == 0 || reds.size() == 0){
            cout << "Case #" << i << ": 0" << endl;
        } else {
            int length = 0;
            while(blues.size() > 0 && reds.size() > 0){
                length += reds.top() + blues.top() - 2;
                reds.pop();
                blues.pop();
            }
            cout << "Case #" << i << ": " << length << endl;
        }
    }
    
    return 0;
}