53432023-04-26 08:36:27sztomiZárójelekcpp11Elfogadva 100/10017ms5972 KiB
#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

int n;
vector<pii> dbok;

int main()
{
    // moho proba:
    //      novelok: -db szerint sortolva
    //      nem novelok: +db szerint sortolva
    //      megprobaljuk ebben a sorrendben berakni oket, ha nem sikerul nincs mo

    ios::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n;
    string s;
    dbok.assign(n, {0, 0});
    vector<int> indexek(n);
    for(int i = 0; i < n; i++){
        cin >> s;
        indexek[i] = i;
        for(char c : s){
            if(c == '('){
                dbok[i].second++;
            }
            else{
                if(dbok[i].second > 0){
                    dbok[i].second--;
                }
                else{
                    dbok[i].first++;
                }
            }
        }
    }
    /*
    cout << "-------------\n";
    for(auto x : dbok){
        cout << x.first << " " << x.second << "\n";
    }
    */


    sort(indexek.begin(), indexek.end(), [&dbok](const int &a, const int &b){
                int kul1 = dbok[a].second - dbok[a].first;
                int kul2 = dbok[b].second - dbok[b].first;

                if(kul1 >= 0 && kul2 >= 0){
                    return dbok[a].first < dbok[b].first;
                }
                else if(kul1 >= 0){
                    return true;
                }
                else if(kul2 >= 0){
                    return false;
                }
                else{
                    return dbok[a].second > dbok[b].second;
                }
         });

    bool lehet = true;
    int akt = 0;
    for(int ind : indexek){
        if(dbok[ind].first > akt){
            lehet = false;
            break;
        }
        akt -= dbok[ind].first;
        akt += dbok[ind].second;
    }
    lehet &= (akt == 0);

    if(lehet){
        for(int ind : indexek){
            cout << ind + 1 << " ";
        }
        cout << "\n";
    }
    else{
        cout << "-1\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1864 KiB
2Elfogadva4ms2216 KiB
subtask211/11
3Elfogadva3ms2372 KiB
4Elfogadva3ms2600 KiB
5Elfogadva3ms2712 KiB
6Elfogadva3ms2924 KiB
7Elfogadva4ms3152 KiB
8Elfogadva4ms3352 KiB
subtask36/6
9Elfogadva4ms3348 KiB
10Elfogadva4ms3656 KiB
11Elfogadva4ms3864 KiB
subtask414/14
12Elfogadva4ms4088 KiB
13Elfogadva4ms4040 KiB
subtask523/23
14Elfogadva4ms3924 KiB
15Elfogadva4ms3992 KiB
subtask619/19
16Elfogadva4ms3928 KiB
17Elfogadva4ms4168 KiB
18Elfogadva4ms4388 KiB
19Elfogadva4ms4344 KiB
20Elfogadva4ms4404 KiB
21Elfogadva3ms4788 KiB
22Elfogadva4ms4728 KiB
23Elfogadva4ms4932 KiB
24Elfogadva3ms5000 KiB
subtask727/27
25Elfogadva4ms4820 KiB
26Elfogadva4ms4948 KiB
27Elfogadva4ms4812 KiB
28Elfogadva4ms4872 KiB
29Elfogadva7ms5096 KiB
30Elfogadva17ms5972 KiB
31Elfogadva4ms4880 KiB
32Elfogadva4ms4876 KiB
33Elfogadva4ms4868 KiB
34Elfogadva4ms4976 KiB
35Elfogadva4ms4804 KiB
36Elfogadva4ms5312 KiB
37Elfogadva3ms4944 KiB
38Elfogadva4ms4952 KiB
39Elfogadva8ms5260 KiB
40Elfogadva3ms4984 KiB
41Elfogadva3ms4928 KiB
42Elfogadva4ms5148 KiB
43Elfogadva4ms5140 KiB