結果
| 問題 |
No.684 Prefix Parenthesis
|
| コンテスト | |
| ユーザー |
aguroshou
|
| 提出日時 | 2018-05-11 23:53:48 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,703 bytes |
| コンパイル時間 | 568 ms |
| コンパイル使用メモリ | 58,820 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-06-28 09:05:54 |
| 合計ジャッジ時間 | 1,362 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 9 WA * 22 |
ソースコード
#include<iostream>
#include <algorithm>
#include<string>
using namespace std;
int main()
{
int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0,ans=0;
string s;
cin >> a;
cin >> s;
int z[100001] = {};
z[0] = 0;
for (b = 1; b <= a; b++)
{
if (s[b - 1] == '(')
{
z[b] += z[b - 1] + 1;
/*if (z[b - 1]<0)
{
e++;
}
else*/
if(z[b - 1]>=0)
{
f++;
}
ans += e;
}
else if (s[b - 1] == ')')
{
if (z[b - 1]>0)
{
e++;
}
else if (z[b - 1] <= 0)
{
g++;
}
ans += e;
z[b] += z[b - 1] - 1;
}
}
c = f;
d = g;
e = 0;
for ( b = 0; b < f+g; b++)
{
if (e-f>=0)
{
ans += f;
e -= f;
}
else if (e-f<0)
{
ans += e;
e = 0;
}
e += g;
if (g>0)
{
g--;
}
else if (f>0)
{
f--;
}
else
{
break;
}
}
//for ( b = 1; b <= a; b++)
//{
// if (s[b-1]=='(')
// {
// z[b] += z[b - 1] + 1;
// if (z[b - 1]<0)
// {
// e++;
// }
// ans += e;
// h = 1;
// }
// else if (s[b - 1] == ')')
// {
// if (z[b-1]>0)
// {
// e++;
// }
// ans += e;
// z[b] += z[b - 1] - 1;
// if (h==0)
// {
// ans--;
// }
// }
//}
//
//for (b = 0; b <= a; b++)
//{
// //cout << z[b] << endl;
//}
////sort(z, z + 100001);
//sort(z,z+a);
//for (b = a; b>=0 ; b--)
//{
// if (z[b]>0)
// {
// c+=z[b];
// }
// else if (z[b]<0)
// {
// if (c>0)
// {
// if (c-z[b]<0)
// {
// ans += c;
// c += z[b];
// }
// else
// {
// ans += -z[b];
// c += z[b];
// }
// }
// }
//}
//for ( b = 0; b < a; b++)
//{
// //cout << z[b] << endl;
//}
//if (ans<0)
//{
// ans = 0;
//}
cout << ans*2 << endl;
return 0;
}
aguroshou