why WA9???
I check some tests where I get from forum, but my program got WA9.
it is my code :
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#define For(i , n) for (int i = 0; i < n; i++)
#define FOR(i , n) for (int i = n - 1; i >= 0; i--)
using namespace std;
struct Char
{
char ch;
int used;
Char(char c,int u) { ch = c; used = u; }
};
string seq;
vector<Char> stck;
void insert(int i)
{
if (stck[i].ch == '(') stck.insert(stck.begin() + i + 1, Char(')', 1));
else if (stck[i].ch == ')')
{
stck.erase(stck.begin() + i);
stck.insert(stck.begin() + i , Char('(' , 1));
stck.insert(stck.begin() + i + 1 , Char(')' , 1));
}
else if (stck[i].ch == '[') stck.insert(stck.begin() + i + 1, Char(']', 1));
else if (stck[i].ch == ']')
{
stck.erase(stck.begin() + i);
stck.insert(stck.begin() + i , Char('[' , 1));
stck.insert(stck.begin() + i + 1 , Char(']' , 1));
}
}
void search(char ch,int from)
{
int res = 0 , pos = from;
bool ok = true;
FOR(i , from)
if (stck[i].ch == ch && !stck[i].used) {
stck[i].used = 1;
pos = i,
ok = false;
break;
}
for (int i = from - 1; i > pos; i--)
if (!stck[i].used)
{
stck[i].used = 1; ok = false;
insert(i);
}
if (ok) stck[from - 1].used = 1 , insert(from - 1);
}
int main()
{
cin>>seq;
stck.clear();
For(i , seq.length())
{
stck.push_back(Char(seq[i],0));
if (stck.back().ch == ')') stck.back().used = 1 , search('(' , stck.size());
else if (stck.back().ch == ']') stck.back().used = 1 , search('[' , stck.size());
}
For(i , stck.size())
{
if (!stck[i].used)
{
stck[i].used = 1;
insert(i);
}
}
For(i , stck.size())
cout<<stck[i].ch;
cout<<endl;
return 0;
}
sorry for my english.