53432023-04-26 08:36:27sztomiZárójelekcpp11Accepted 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";
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1864 KiB
2Accepted4ms2216 KiB
subtask211/11
3Accepted3ms2372 KiB
4Accepted3ms2600 KiB
5Accepted3ms2712 KiB
6Accepted3ms2924 KiB
7Accepted4ms3152 KiB
8Accepted4ms3352 KiB
subtask36/6
9Accepted4ms3348 KiB
10Accepted4ms3656 KiB
11Accepted4ms3864 KiB
subtask414/14
12Accepted4ms4088 KiB
13Accepted4ms4040 KiB
subtask523/23
14Accepted4ms3924 KiB
15Accepted4ms3992 KiB
subtask619/19
16Accepted4ms3928 KiB
17Accepted4ms4168 KiB
18Accepted4ms4388 KiB
19Accepted4ms4344 KiB
20Accepted4ms4404 KiB
21Accepted3ms4788 KiB
22Accepted4ms4728 KiB
23Accepted4ms4932 KiB
24Accepted3ms5000 KiB
subtask727/27
25Accepted4ms4820 KiB
26Accepted4ms4948 KiB
27Accepted4ms4812 KiB
28Accepted4ms4872 KiB
29Accepted7ms5096 KiB
30Accepted17ms5972 KiB
31Accepted4ms4880 KiB
32Accepted4ms4876 KiB
33Accepted4ms4868 KiB
34Accepted4ms4976 KiB
35Accepted4ms4804 KiB
36Accepted4ms5312 KiB
37Accepted3ms4944 KiB
38Accepted4ms4952 KiB
39Accepted8ms5260 KiB
40Accepted3ms4984 KiB
41Accepted3ms4928 KiB
42Accepted4ms5148 KiB
43Accepted4ms5140 KiB