Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Const
- MaxN = 101;
- Inf = 10000;
- Var
- Ans : Array [1 .. MaxN, 1 .. MaxN] Of LongInt;
- Inv : Array [Char] Of Char;
- S : String;
- I, J : LongInt;
- Function Min(A, B : LongInt) : LongInt;
- Begin
- Min := A;
- If A > B Then Min := B;
- End;
- Function X(L, R : LongInt) : LongInt;
- Var
- Best, J : LongInt;
- Begin
- If L > R Then
- Begin
- X := 0;
- Exit;
- End;
- If L = R Then
- Begin
- X := 1;
- Exit;
- End;
- If Ans[L, R] <> Inf Then
- Begin
- X := Ans[L, R];
- Exit;
- End;
- Best := Inf;
- If Inv[S[L]] = S[R]
- Then Best := X(L + 1, R - 1);
- For J := L To R - 1 Do
- Best := Min(Best, X(L, J) + X(J + 1, R));
- Ans[L, R] := Best;
- X := Best;
- End;
- Begin
- Inv['('] := ')';
- Inv['['] := ']';
- Inv['{'] := '}';
- For I := 1 To MaxN Do
- For J := 1 To MaxN Do
- Ans[I, J] := Inf;
- ReadLn(S);
- WriteLn(X(1, Length(S)));
- End.
Advertisement
Add Comment
Please, Sign In to add comment