помогите пж нужен срочно

В этом сезоне каждая баскетбольная команда сыграла ровно n игр. Каждая игра была между двумя командами и команда с большим количеством очков считалась победителем игры. В этом сезоне не было ничьих.

Вы записали результаты игр вашей любимой команды «FaceHook» в виде строки s и массива a. si=«W» если команда выиграла i-тую игру и si=«L» если она проиграла. ai равно количеству очков которое команда заработала на i-той игре. Информация об играх задана в том порядке в котором команда их играла.

Вы также записали результаты игр вашей второй любимой команды «Janibek Street» в виде строки t и массива b. ti=«W» если команда выиграла i-тую игру и ti=«L» если она проиграла. bi равно количеству очков которое команда заработала на i-той игре. Информация об играх задана в том порядке в котором команда их играла.

Для вас, Супер-игра это игра в которой соревнуются команды «FaceHook» и «Janibek Street». Так как вы не записали информацию об оппонентах своих любимых команд, непонятно сколько было супер-игр (если они вообще были). Но вам интересно узнать максимальное суммарное количество очков которое могли заработать обе команды в некоторой конфигурации супер-игр соответствующая записанным данным. Заметьте, что порядок игр имеет значение. То есть команда не может сыграть свой второй матч как первую супер-игру а потом свой первый матч как вторую супер-игру.

вот то что я пробовал но не смог

#include <bits/stdc++.h>
#define ll long long
using namespace std;
vector<ll> a,a1,l,l1;
int Search_Binary (vector<ll> arr, int left, int right, int key)
{
    int midd = 0;
    while (1)
    {
        midd = (left + right) / 2;
        if(key>arr[right])return right;
        if(key<arr[left])return -1;
        if(key < arr[midd]&&key > arr[midd-1]){
            return midd-1;
        }
        if(key < arr[midd+1]&&key > arr[midd]){
            return midd;
        }
        if (key < arr[midd])
            right = midd - 1;
        else if (key > arr[midd])
            left = midd + 1;


        if (left > right)
            return -1;
}
}
int main ()
{
    ll n;
    string s,b;
    cin>>n;
    cin>>s;
    for(int i=0;i<n;i++){
        ll q;
        cin>>q;
        if(s[i]=='W')a.push_back(q);
        else a1.push_back(q);
    }
    cin>>b;
    for(int i=0;i<n;i++){
        ll q;
        cin>>q;
        if(b[i]=='W')l.push_back(q);
        else l1.push_back(q);
    }
    sort(a.begin(),a.end());
    sort(a1.begin(),a1.end());
    sort(l.begin(),l.end());
    sort(l1.begin(),l1.end());
    ll sum=0;
    for(int i=0;i<a.size();i++){
        ll ind=Search_Binary(l1,0,l1.size()-1,a[i]);
        if(ind>0){
            sum+=a[i]+l1[ind];
            l1[ind]=1000010;
            sort(l1.begin(),l1.end());
        }
    }
    for(int i=0;i<l.size();i++){
        ll ind=Search_Binary(a1,0,a1.size()-1,l[i]);
        if(ind>0){
            sum+=l[i]+a1[ind];
            a1[ind]=1000010;
            sort(a1.begin(),a1.end());
        }
    }
    cout<<sum;
}

Ответы (0 шт):