Submission #2406672


Source Code Expand

#include <iostream>
#include <string>
#include <vector>
#include <stack>
using namespace std;

const long long mod = 998244353;

struct State {
	long long ty, a, b;
};
long long parse(string A) {
	long long J = 0;
	for (int i = 0; i < A.size(); i++) {
		J *= 10; J += (A[i] - '0'); J %= mod;
	}
	return J;
}
string S, T; vector<string>V1; vector<long long>U;
stack<State>I;

int main() {
	cin >> S; string V = "";
	for (int i = 0; i < S.size(); i++) {
		if (S[i] >= '0' && S[i] <= '9') V += S[i];
		else { if (V.size() >= 1) { T += "1"; V1.push_back(V); V = ""; } T += S[i]; }
	}
	if (V.size() >= 1) { T += "1"; V1.push_back(V); V = ""; }
	for (int i = 0; i < V1.size(); i++) U.push_back(parse(V1[i]));

	int cnt = 0;

	for (int i = 0; i < T.size(); i++) {
		if (T[i] == '(') {
			I.push(State{ 1,0,0 });
		}
		if (T[i] == '1') {
			I.push(State{ 2,U[cnt],0 });
			cnt++;
		}
		if (T[i] == '*') {
			I.push(State{ 3,0,0 });
		}
		if (T[i] == ',') {
			I.push(State{ 4,0,0 });
		}
		if (T[i] == ')') {
			State V3 = I.top(); I.pop();
			State V2 = I.top(); I.pop();
			State V1 = I.top(); I.pop();
			I.pop();
			if (V2.ty == 3) {
				if (V1.ty == 2 && V3.ty == 2) I.push(State{ 2,V1.a*V3.a%mod,0 });
				if (V1.ty == 2 && V3.ty == 5) I.push(State{ 5,V1.a*V3.a%mod,V1.a*V3.b%mod });
				if (V1.ty == 5 && V3.ty == 2) I.push(State{ 5,V1.a*V3.a%mod,V1.b*V3.a%mod });
				if (V1.ty == 5 && V3.ty == 5) I.push(State{ 2,(V1.a*V3.a + V1.b*V3.b) % mod });
			}
			if (V2.ty == 4) {
				I.push(State{ 5,V1.a,V3.a });
			}
		}
	}
	cout << I.top().a << endl;
	return 0;
}

Submission Info

Submission Time
Task E - ベクトル式
User E869120
Language C++14 (GCC 5.4.1)
Score 1
Code Size 1624 Byte
Status AC
Exec Time 12 ms
Memory 2176 KB

Judge Result

Set Name sample all
Score / Max Score 0 / 0 1 / 1
Status
AC × 3
AC × 16
Set Name Test Cases
sample sample-01.txt, sample-02.txt, sample-03.txt
all sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 1 ms 256 KB
01-02.txt AC 1 ms 256 KB
01-03.txt AC 1 ms 256 KB
01-04.txt AC 2 ms 512 KB
01-05.txt AC 12 ms 2176 KB
01-06.txt AC 12 ms 2176 KB
01-07.txt AC 12 ms 2176 KB
01-08.txt AC 12 ms 2176 KB
01-09.txt AC 1 ms 256 KB
01-10.txt AC 5 ms 640 KB
sample-01.txt AC 1 ms 256 KB
sample-02.txt AC 1 ms 256 KB
sample-03.txt AC 1 ms 256 KB