Submission #00095


ソースコード

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define fr first
#define sc second
#define Rep(i,n) for(int i=0;i<(n);i++)
#define Rrep(i, m, n) for(int i=(m);i<(n);i++)
#define All(v) v.begin(),v.end()
#define Uniq(v) v.erase(unique(All(v)),v.end())
typedef pair<int, int> Pii;
typedef pair<int, Pii> Pip;
typedef pair<string, int> Psi;
typedef vector<int> Vi;
const int INF = (1<<30);
const int dx[]={1,0,-1,0}, dy[]={0,-1,0,1};
int ii;
int n;
string s[100];
int func(int now, int d, char c) {
//cout << now << " " << d << " " << c << " " << endl;
int sum;
if( c == '*' ) sum = 1;
else sum = 0;
for(int i=now; i<n; i++) {
string ss = s[i];
int cnt = 0;
int re;
if( ss.size()-1 == d ) {
if( ss[ss.size()-1] == '*' || ss[ss.size()-1] == '+' ) {
re = func(i+1, d+1, ss[ss.size()-1]);
i = ii-1;
if( c == '*' ) sum *= re;
else sum += re;
/*for(int j=1+1; j<n; j++) {
if( s[j].size()-1 == d ) {
i = j;
break;
}
}*/
} else {
if( c == '*' ) sum *= (ss[ss.size()-1] - '0');
else sum += (ss[ss.size()-1] - '0');
}
}
else {
//cout << sum << " " << i << " " << d << endl;
ii = i;
return sum;
}
}
//cout << sum << 'a' << endl;
ii = n;
return sum;
}
int main()
{
while( cin >> n, n ) {
for(int i=0; i<n; i++) {
cin >> s[i];
}
if( s[0][0] != '*' && s[0][0] != '+' ) cout << s[0][0] << endl;
else cout << func(1, 1, s[0][0]) << endl;
}
}

ステータス

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

セット

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

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
C1 AC 12 ms 476 KB
1
C2 AC 13 ms 704 KB
1
C3 AC 14 ms 548 KB
1
C4 AC 11 ms 512 KB
1