5343 2023. 04. 26 08:36:27 sztomi Zárójelek cpp11 Elfogadva 100/100 17ms 5972 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1864 KiB
2 Elfogadva 4ms 2216 KiB
subtask2 11/11
3 Elfogadva 3ms 2372 KiB
4 Elfogadva 3ms 2600 KiB
5 Elfogadva 3ms 2712 KiB
6 Elfogadva 3ms 2924 KiB
7 Elfogadva 4ms 3152 KiB
8 Elfogadva 4ms 3352 KiB
subtask3 6/6
9 Elfogadva 4ms 3348 KiB
10 Elfogadva 4ms 3656 KiB
11 Elfogadva 4ms 3864 KiB
subtask4 14/14
12 Elfogadva 4ms 4088 KiB
13 Elfogadva 4ms 4040 KiB
subtask5 23/23
14 Elfogadva 4ms 3924 KiB
15 Elfogadva 4ms 3992 KiB
subtask6 19/19
16 Elfogadva 4ms 3928 KiB
17 Elfogadva 4ms 4168 KiB
18 Elfogadva 4ms 4388 KiB
19 Elfogadva 4ms 4344 KiB
20 Elfogadva 4ms 4404 KiB
21 Elfogadva 3ms 4788 KiB
22 Elfogadva 4ms 4728 KiB
23 Elfogadva 4ms 4932 KiB
24 Elfogadva 3ms 5000 KiB
subtask7 27/27
25 Elfogadva 4ms 4820 KiB
26 Elfogadva 4ms 4948 KiB
27 Elfogadva 4ms 4812 KiB
28 Elfogadva 4ms 4872 KiB
29 Elfogadva 7ms 5096 KiB
30 Elfogadva 17ms 5972 KiB
31 Elfogadva 4ms 4880 KiB
32 Elfogadva 4ms 4876 KiB
33 Elfogadva 4ms 4868 KiB
34 Elfogadva 4ms 4976 KiB
35 Elfogadva 4ms 4804 KiB
36 Elfogadva 4ms 5312 KiB
37 Elfogadva 3ms 4944 KiB
38 Elfogadva 4ms 4952 KiB
39 Elfogadva 8ms 5260 KiB
40 Elfogadva 3ms 4984 KiB
41 Elfogadva 3ms 4928 KiB
42 Elfogadva 4ms 5148 KiB
43 Elfogadva 4ms 5140 KiB