169322025-05-15 20:05:59UVinceZárójelekcpp17Accepted 100/10023ms1436 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;

struct sor{
    int mn;
    int sum;
    int idx;
    sor(int x,int y,int z){
        mn=x;
        sum=y;
        idx=z;
    }
    bool operator< (const sor &c) const {
        return mn < c.mn;
    }
};

int main(){
    int n;
    cin>>n;
    vector<sor> add, sub;
    for (int i=1;i<=n;i++){
        string s;
        cin>>s;
        int sum=0;
        int mn=1e6;
        for (char c : s){
            if (c=='(') sum++;
            else sum--;
            mn=min(mn, sum);
        }
        if (sum>=0) add.push_back(sor(mn, sum, i));
        else {
            int sum2=0;
            int mn2=1e6;
            for (int j=(int)s.size()-1;j>=0;--j){
                if (s[j]==')') sum2++;
                else sum2--;
                mn2=min(mn2, sum2);
            }
            sub.push_back(sor(mn2, sum2, i));
        }
    }
    sort(add.rbegin(), add.rend());
    sort(sub.rbegin(), sub.rend());
    vector<int> ans, ans2;
    int total=0;
    bool pos=true;

    for (auto i : add){
        if (total+i.mn<0) {
            pos=false; break;
        }
        ans.push_back(i.idx);
        total+=i.sum;
    }
    int total2=0;
    for (auto i : sub){
        if (total2+i.mn<0) {
            pos=false; break;
        }
        ans2.push_back(i.idx);
        total2+=i.sum;
    }

    if (!pos || total-total2!=0){
        cout<<-1;
        return 0;
    }

    for (int i : ans) cout<<i<<" ";
    reverse(ans2.begin(), ans2.end());
    for (int i : ans2) cout<<i<<" ";
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted8ms316 KiB
subtask211/11
3Accepted1ms500 KiB
4Accepted1ms556 KiB
5Accepted1ms508 KiB
6Accepted1ms316 KiB
7Accepted6ms404 KiB
8Accepted7ms564 KiB
subtask36/6
9Accepted7ms500 KiB
10Accepted6ms316 KiB
11Accepted6ms512 KiB
subtask414/14
12Accepted6ms408 KiB
13Accepted6ms316 KiB
subtask523/23
14Accepted6ms316 KiB
15Accepted6ms364 KiB
subtask619/19
16Accepted6ms508 KiB
17Accepted7ms544 KiB
18Accepted7ms512 KiB
19Accepted6ms316 KiB
20Accepted6ms564 KiB
21Accepted4ms368 KiB
22Accepted4ms500 KiB
23Accepted4ms316 KiB
24Accepted4ms316 KiB
subtask727/27
25Accepted7ms508 KiB
26Accepted8ms316 KiB
27Accepted8ms508 KiB
28Accepted8ms592 KiB
29Accepted10ms608 KiB
30Accepted23ms1436 KiB
31Accepted7ms400 KiB
32Accepted8ms524 KiB
33Accepted7ms316 KiB
34Accepted8ms556 KiB
35Accepted6ms316 KiB
36Accepted8ms564 KiB
37Accepted6ms316 KiB
38Accepted6ms432 KiB
39Accepted13ms820 KiB
40Accepted4ms316 KiB
41Accepted2ms500 KiB
42Accepted6ms636 KiB
43Accepted4ms444 KiB