#include <bits/stdc++.h>
using namespace std;
#define int long long
#define MZ 500000
struct ST{
int n;
vector<int>a,b;
ST(int n):n(n),a(n*4,INT_MIN),b(n*4,-1){
}
pair<int,int>query(int i,int l,int r,int ll,int rr){
if(l>rr||r<ll){
return {INT_MIN,-1};
}
if(l>=ll&&r<=rr){
return {a[i],b[i]};
}
auto[al,bl]=query(i*2+1,l,(l+r)/2,ll,rr);
auto[ar,br]=query(i*2+2,(l+r)/2+1,r,ll,rr);
return al>=ar?pair<int,int>{al,bl}:pair<int,int>{ar,br};
}
pair<int,int>query(int ll,int rr){
auto it=max_element(a.begin()+ll,a.begin()+rr+1);
return{*it,it-a.begin()};
// return query(0,0,n-1,ll,rr);
}
void update(int i,int l,int r,int ii,int xx){
if(l>ii||r<ii){
return;
}
if(l==r){
a[i]=xx;
b[i]=l;
return;
}
update(i*2+1,l,(l+r)/2,ii,xx);
update(i*2+2,(l+r)/2+1,r,ii,xx);
a[i]=a[i*2+1]>=a[i*2+2]?a[i*2+1]:a[i*2+2];
b[i]=a[i*2+1]>=a[i*2+2]?b[i*2+1]:b[i*2+2];
}
void update(int ii,int xx){
// update(0,0,n-1,ii,xx);
a[ii]=xx;
}
};
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin>>N;
ST a(MZ),b(MZ);
vector<int>ma(MZ),mb(MZ),za(MZ),zb(MZ);
set<int>aa,bb;
for(int i=0;i<MZ;i++){
aa.insert(i);
bb.insert(i);
}
int x=0,c=0;
for(int i=0;i<N;i++){
string S;
cin>>S;
int y=0,z=0;
for(char c:S){
if(c=='('){
y++;
}
else{
y--;
z=max(z,-y);
}
}
x+=y;
if(y>=0){
c++;
int zz=*aa.lower_bound(MZ/2-z);
aa.erase(zz);
a.update(zz,y);
ma[zz]=i;
za[zz]=z;
}
else{
int zz=*bb.lower_bound(MZ/2-z);
bb.erase(zz);
b.update(zz,y+z);
mb[zz]=i;
zb[zz]=z;
}
}
if(x!=0){
cout<<-1<<'\n';
return 0;
}
vector<int>ans;
while(ans.size()<N){
if(c>0){
c--;
auto[y,z]=a.query(MZ/2-x,MZ);
if(y==INT_MIN){
cout<<-1<<'\n';
return 0;
}
a.update(z,INT_MIN);
x+=y;
ans.push_back(ma[z]);
}
else{
auto[yz,z]=b.query(MZ/2-x,MZ);
if(yz==INT_MIN){
cout<<-1<<'\n';
return 0;
}
b.update(z,INT_MIN);
x+=yz-zb[z];
ans.push_back(mb[z]);
}
}
for(int i:ans){
cout<<i+1<<' ';
}
cout<<'\n';
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Időlimit túllépés | 505ms | 251916 KiB | ||||
2 | Időlimit túllépés | 575ms | 126480 KiB | ||||
subtask2 | 0/11 | ||||||
3 | Elfogadva | 460ms | 252436 KiB | ||||
4 | Elfogadva | 456ms | 252652 KiB | ||||
5 | Időlimit túllépés | 505ms | 252556 KiB | ||||
6 | Elfogadva | 462ms | 252568 KiB | ||||
7 | Elfogadva | 460ms | 253080 KiB | ||||
8 | Elfogadva | 458ms | 253480 KiB | ||||
subtask3 | 0/6 | ||||||
9 | Időlimit túllépés | 577ms | 127156 KiB | ||||
10 | Időlimit túllépés | 500ms | 253052 KiB | ||||
11 | Elfogadva | 458ms | 253036 KiB | ||||
subtask4 | 0/14 | ||||||
12 | Időlimit túllépés | 577ms | 127660 KiB | ||||
13 | Időlimit túllépés | 577ms | 127676 KiB | ||||
subtask5 | 0/23 | ||||||
14 | Időlimit túllépés | 573ms | 127708 KiB | ||||
15 | Időlimit túllépés | 573ms | 127812 KiB | ||||
subtask6 | 0/19 | ||||||
16 | Elfogadva | 497ms | 253476 KiB | ||||
17 | Időlimit túllépés | 569ms | 127892 KiB | ||||
18 | Időlimit túllépés | 564ms | 127908 KiB | ||||
19 | Időlimit túllépés | 577ms | 128100 KiB | ||||
20 | Időlimit túllépés | 573ms | 128124 KiB | ||||
21 | Időlimit túllépés | 569ms | 128228 KiB | ||||
22 | Időlimit túllépés | 573ms | 128104 KiB | ||||
23 | Időlimit túllépés | 569ms | 128304 KiB | ||||
24 | Időlimit túllépés | 564ms | 128252 KiB | ||||
subtask7 | 0/27 | ||||||
25 | Elfogadva | 483ms | 253932 KiB | ||||
26 | Időlimit túllépés | 564ms | 128140 KiB | ||||
27 | Időlimit túllépés | 556ms | 128076 KiB | ||||
28 | Időlimit túllépés | 573ms | 128008 KiB | ||||
29 | Időlimit túllépés | 560ms | 128208 KiB | ||||
30 | Időlimit túllépés | 552ms | 128140 KiB | ||||
31 | Időlimit túllépés | 565ms | 128460 KiB | ||||
32 | Időlimit túllépés | 580ms | 128456 KiB | ||||
33 | Időlimit túllépés | 577ms | 128408 KiB | ||||
34 | Időlimit túllépés | 588ms | 128416 KiB | ||||
35 | Időlimit túllépés | 573ms | 128488 KiB | ||||
36 | Időlimit túllépés | 569ms | 128332 KiB | ||||
37 | Időlimit túllépés | 577ms | 128532 KiB | ||||
38 | Időlimit túllépés | 564ms | 128432 KiB | ||||
39 | Időlimit túllépés | 573ms | 128412 KiB | ||||
40 | Időlimit túllépés | 552ms | 128536 KiB | ||||
41 | Időlimit túllépés | 587ms | 128712 KiB | ||||
42 | Időlimit túllépés | 582ms | 128904 KiB | ||||
43 | Időlimit túllépés | 573ms | 128960 KiB |