結果
| 問題 |
No.265 数学のテスト
|
| コンテスト | |
| ユーザー |
h_noson
|
| 提出日時 | 2016-06-09 19:58:39 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 5 ms / 2,000 ms |
| コード長 | 1,534 bytes |
| コンパイル時間 | 910 ms |
| コンパイル使用メモリ | 72,020 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-24 11:33:59 |
| 合計ジャッジ時間 | 1,877 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
ソースコード
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <stack>
using namespace std;
#define REP(i,s,e) for (i = s; i <= e; i++)
#define rep(i,n) REP (i,0,(int)(n)-1)
#define RREP(i,s,e) for (i = s; i >= e; i--)
#define rrep(i,n) RREP (i,(int)(n)-1,0)
#define INF (int)1e8
#define MOD (int)(1e9+7)
typedef long long ll;
int main(void) {
int n, d;
string s;
cin >> n >> d >> s;
vector<pair<ll,int>> terms[20000];
pair<ll,int> term = {0,0};
int depth = 0;
for (auto& c : s) {
if (c == 'x') {
if (term.first == 0)
term.first = 1;
term.second++;
}
else if ('1' <= c && c <= '9')
term.first = c - '0';
else if (c == '+') {
terms[depth].push_back(term);
term.first = 0; term.second = 0;
}
else if (c == 'd')
depth++;
else if (c == '}') {
terms[depth].push_back(term);
term.first = 0; term.second = 0;
for (auto&& t : terms[depth]) {
t.first *= t.second;
t.second--;
if (t.second >= 0)
terms[depth-1].push_back(t);
}
terms[depth].clear();
depth--;
}
}
if (s.back() != '}')
terms[0].push_back(term);
int i;
ll ans[11] {};
for (auto&& t : terms[0])
ans[t.second] += t.first;
rep (i,d+1)
cout << ans[i] << " ";
cout << endl;
return 0;
}
h_noson