Submission #00098


ソースコード

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <bits/stdc++.h>
using namespace std;
int n;
string str[11111];
int len[11111];
int num[11111];
int ans = 0, most;
string kigo;
int main()
{
while (1) {
cin >> n;
if (n == 0) {
break;
}
ans = 0;
memset(len, 0, sizeof(0));
memset(num, 0, sizeof(0));
most = 0;
for (int i = 0; i < n; i++) {
cin >> str[i];
len[i] = str[i].length();
most = max(len[i], most);
if (str[i][len[i]-1] != '+' && str[i][len[i]-1] != '*') {
num[i] = str[i][len[i]-1] - '0';
}
else {
num[i] = -1;
}
}
int k = 0;
int i = most;
/*for (int l = 0; l < n; l++) {
cout << len[l] << ' ';
}*/
while (i > 2) {
if (k >= n) {
k = 0;
i--;
}
if (len[k] == i) {
num[k-1] = num[k];
kigo = str[k-1][i-2];
//cout << kigo << endl;
num[k] = -1;
int j = k+1;
int keep = len[k];
while (len[j] == keep && j < n) {
if (kigo == "+") {
num[k-1] += num[j];
}
else {
num[k-1] *= num[j];
}
len[j]--;
num[j] = -1;
j++;
}
/*for (int l = 0; l < n; l++) {
cout << num[l] << ' ';
}*/
}
k++;
}
kigo = str[0][0];
if (kigo == "+") {
for (int i = 0; i < n; i++) {
if (num[i] >= 0 && num[i] < 100000) {
ans += num[i];
}
}
}
else if (kigo == "*") {
ans = 1;
for (int i = 0; i < n; i++) {
if (num[i] >= 0 && num[i] < 100000) {
ans *= num[i];
}
}
}
else {
ans = str[0][0] - '0';
}
cout << ans << endl;
}
}

ステータス

項目 データ
問題 0003 - ICPC計算機
ユーザー名 ei1439
投稿日時 2016-03-30 15:23:49
言語 C++
状態 Wrong Answer
得点 0
ソースコード長 1675 Byte
最大実行時間 15 ms
最大メモリ使用量 880 KB

セット

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

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
C1 WA 13 ms 860 KB
1
C2 WA 11 ms 872 KB
1
C3 WA 10 ms 880 KB
1
C4 WA 15 ms 760 KB
1