52842023-04-25 11:09:28ZsofiaKeresztelyZárójelekcpp14Hibás válasz 0/1003ms4744 KiB
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int, int>
#define fi first
#define se second
typedef long long ll;

int main()
{
    freopen("be2.txt", "r", stdin);
    int n;
    cin >> n;
    vector<pii> req(n+1);
    vector<int> dif(n+1), op(n+1, 0), opp(n);
    for (int i=1; i<=n; i++){
        string s;
        cin >> s;
        int sum = 0;
        int left=0, right=0, needed=0;
        for (char c : s){
            if (c == '(') left++;
            else right++;
            if (left + needed < right) needed++;
        }
        req[i] = make_pair(needed, i);
        dif[i] = left - right;
    }
    req[0] = {0,0};
    sort(req.begin(), req.end());
    priority_queue<pii> pq;
    int ind = 0, prov = 0, cnt = 1;
    while (!req[ind+1].fi){
        ind++;
        pq.push({dif[req[ind].se], req[ind].se});
    }
    while (!pq.empty()){
        pii p = pq.top();
        pq.pop();
        prov += p.fi;
        op[p.se] = cnt;
        cnt++;
        while (ind < n && req[ind+1].fi <= prov){
            ind++;
            pq.push({dif[req[ind].se], req[ind].se});
        }
        while (ind > 0 && req[ind].fi > prov){
            if (!op[req[ind].se]){
                cout << -1;
                return 0;
            }
            ind--;
        }
    }
    for (int i=1; i<=n; i++){
        if (!op[i]){
            cout << -1;
            return 0;
        }
        opp[op[i]-1] = i;
    }
    for (int x : opp){
        cout << x << " ";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz3ms1804 KiB
2Hibás válasz3ms2068 KiB
subtask20/11
3Hibás válasz3ms2280 KiB
4Hibás válasz3ms2532 KiB
5Hibás válasz3ms2796 KiB
6Hibás válasz3ms3136 KiB
7Hibás válasz3ms3192 KiB
8Hibás válasz3ms3352 KiB
subtask30/6
9Hibás válasz3ms3620 KiB
10Hibás válasz2ms3600 KiB
11Hibás válasz2ms3824 KiB
subtask40/14
12Hibás válasz2ms3916 KiB
13Hibás válasz2ms3808 KiB
subtask50/23
14Hibás válasz2ms3976 KiB
15Hibás válasz2ms3952 KiB
subtask60/19
16Hibás válasz2ms3952 KiB
17Hibás válasz2ms4080 KiB
18Hibás válasz2ms4080 KiB
19Hibás válasz2ms4116 KiB
20Hibás válasz3ms4236 KiB
21Hibás válasz3ms4224 KiB
22Hibás válasz2ms4220 KiB
23Hibás válasz3ms4348 KiB
24Hibás válasz3ms4332 KiB
subtask70/27
25Hibás válasz2ms4456 KiB
26Hibás válasz3ms4432 KiB
27Hibás válasz2ms4452 KiB
28Hibás válasz2ms4552 KiB
29Hibás válasz3ms4328 KiB
30Hibás válasz2ms4324 KiB
31Hibás válasz2ms4432 KiB
32Hibás válasz2ms4324 KiB
33Hibás válasz3ms4460 KiB
34Hibás válasz3ms4532 KiB
35Hibás válasz3ms4428 KiB
36Hibás válasz2ms4428 KiB
37Hibás válasz3ms4660 KiB
38Hibás válasz2ms4636 KiB
39Hibás válasz2ms4640 KiB
40Hibás válasz2ms4640 KiB
41Hibás válasz3ms4640 KiB
42Hibás válasz2ms4744 KiB
43Hibás válasz2ms4740 KiB