Submission #00096


ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<bits/stdc++.h>
#define F first
#define S second
using namespace std;
typedef pair<long long,char> SIKI;
typedef pair<SIKI,long long> VSIKI;
main(){
long long n;
string siki;
while(cin>>n,n){
vector<VSIKI> vsiki;
long long maxlevel=0;
for(int i=0;i<n;i++){
cin>>siki;
long long level=0;
for(int j=0;j<siki.size()&&siki[j]=='.';j++){
level++;
}
maxlevel=max(maxlevel,level);
long long num=0;
if(siki[level]>='0'&&siki[level]<='9'){
num=siki[level]-'0';
}
vsiki.push_back(VSIKI(SIKI(level,siki[level]),num));
}
long long anspos=0;
for(int i=maxlevel;i>=1;i--){
char c='x';
long long pos=0;
for(int j=0;j<n;j++){
if(vsiki[j].F.F==i-1&&(vsiki[j].F.S=='*'||vsiki[j].F.S=='+')){
c=vsiki[j].F.S;
pos=-1;
}
else if(vsiki[j].F.F==i&&vsiki[j].F.S>='0'&&vsiki[j].F.S<='9'){
if(pos==-1){
anspos=j;
pos=j;
vsiki[j].F.F--;
}
else{
if(c=='+'){
vsiki[pos].S+=vsiki[j].S;
vsiki[j].S=0;
}
else if(c=='*'){
vsiki[pos].S*=vsiki[j].S;
vsiki[j].S=0;
}
}
}
}
}
cout<<vsiki[anspos].S<<endl;
}
}

ステータス

項目 データ
問題 0003 - ICPC計算機
ユーザー名 ei1417
投稿日時 2016-03-30 15:20:51
言語 C++11
状態 Accepted
得点 20
ソースコード長 1234 Byte
最大実行時間 14 ms
最大メモリ使用量 544 KB

セット

セット 得点 Cases
1 ALL 20 / 20 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
C1 AC 10 ms 476 KB
1
C2 AC 13 ms 448 KB
1
C3 AC 12 ms 544 KB
1
C4 AC 14 ms 516 KB
1