石のA.のA杭
テストあたりの時間制限
1秒
テストごとのメモリ制限
256メガバイト
入力
標準入力
出力
標準出力
Vasyaは石のいくつかの番号で構成杭を、持っています。NN回彼はどちらかの山から一石を取ったり杭に一石を追加しました。山は山から一石を取って、各操作の前に非空でした。
あなたはVasyaが行ったnnの操作を与えられています。これらの操作を行った後、山にあることができる石の最小限の可能な数を検索します。
入力
Vasya(1≤n≤1001≤n≤100)によってなされた操作の数、 - 最初の行は一つの正の整数NNを含有します。
「 - 」、「+」(引用符なし)または(引用符なし)次の行は、に等しいNNシンボルからなる文字列SSを含んでいます。「 - 」Vasyaは、第IIオペレーション上の石を取った場合、シシィはに等しい(引用符なし)を添加した場合、シシィは、(引用符なし)「+」に等しいです。
出力
これらnnの操作の後の山にすることができ石の最小限の可能な数 - 1つの整数を印刷します。
例
入力
コピー
3 ---
出力
コピー
0
入力
コピー
4 ++++
出力
コピー
4
入力
コピー
2 - +
出力
コピー
1
入力
コピー
5 ++ - ++
出力
コピー
3
注意
Vasyaが最初に山に33石を持っていた場合、最初の試験では、操作を行った後、石の数は、山の少ない数を持つことは不可能なので、答えは00ください予告である、ことを00に等しくなりますこの場合には、Vasyaは、いくつかの操作(杭が空になります)の上に石を取ることができなくなりますので、初めに石の数は、33よりも、小さくすることはできません。
第二の試験では、Vasya場合初めにパイル00の石を有し、操作を行った後石の数は、杭のより少ない数を有することは不可能である44に等しくなるために44回の操作に石の数を行った後44石の山が高くなります。だから、答えは44です。
Vasyaが最初に山に11の石を持っていた場合には第三の試験では、作った後の操作は、石の数は、操作を行った後、石のより少ない数を持つことは不可能であることを、証明することができる11に等しくなります。
第四の試験では、もしVasyaは、操作を行った後、石の数は、33に等しくなり、冒頭にパイル00の石を持っていました。
質問の意味:石の山を、あなたが追加したり、石の一部を奪うことができ、それが奪われた場合、石、十分な石があることを確認するために石のこの山は、あなたは何の石を追加することはできません。次に動作をn回、及び長さの文字列にN、+添加される - 低減され、後にn回操作した後、それは石岩ヒープの現在の数を出力します。
ソリューション:アナログ
パイソン:
n=int(input())
s=input()
ans=0
for i in s:
if i=='+':ans+=1
else:ans=max(ans-1,0)
print(ans)
C ++:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,ans=0;
string s;
cin>>n;
cin>>s;
for(int i=0; i<n; i++)
if(s[i]=='+') ans++;
else ans=ans>0?--ans:0;
cout<<ans<<endl;
return 0;
}