結果
| 問題 |
No.265 数学のテスト
|
| コンテスト | |
| ユーザー |
nanasili
|
| 提出日時 | 2015-09-09 09:32:31 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,722 bytes |
| コンパイル時間 | 656 ms |
| コンパイル使用メモリ | 87,788 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-19 05:02:12 |
| 合計ジャッジ時間 | 2,430 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 29 WA * 1 RE * 2 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:85:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
85 | scanf("%d", &n);
| ~~~~~^~~~~~~~~~
main.cpp:86:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
86 | scanf("%d", &d);
| ~~~~~^~~~~~~~~~
main.cpp:87:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
87 | scanf("%s", s);
| ~~~~~^~~~~~~~~
ソースコード
#include <algorithm>
#include <vector>
#include <cfloat>
#include <string>
#include <cmath>
#include <set>
#include <cstdlib>
#include <map>
#include <ctime>
#include <iomanip>
#include <functional>
#include <deque>
#include <iostream>
#include <cstring>
#include <queue>
#include <cstdio>
#include <stack>
#include <climits>
#include <sys/time.h>
#include <cctype>
using namespace std;
typedef long long ll;
typedef vector <pair<int, int> > VPI;
#define ST -1
#define EN -2
char s[50001];
int n, d;
int ans[11];
VPI calc(VPI a) {
VPI ret;
int cnt = 0;
for (int p = 0; p < a.size(); p++) {
if (a[p].first == ST) {
cnt++;
}else if (a[p].second == EN) {
cnt--;
}else {
int t = 1;
for (int i = 0; i < cnt; i++) {
t *= a[p].second;
a[p].second--;
}
ret.emplace_back(a[p].first*t, a[p].second);
}
}
return ret;
}
VPI henkan(char *s) {
VPI ret;
int t = 1, b = 0;
for (int i = 0; i < n; i++) {
if (s[i] == 'd') {
t = 1; b = 0;
ret.emplace_back(ST, ST);
}else if (s[i] == '}') {
t = 1; b = 0;
ret.emplace_back(EN, EN);
}
if (isdigit(s[i])) {
t *= s[i]-'0';
if ((i+1 < n && s[i+1] != '*') || i+1 >= n) {
ret.emplace_back(t, b);
t = 1; b = 0;
}
}else if (s[i] == 'x') {
b++;
if ((i+1 < n && s[i+1] != '*') || i+1 >= n) {
ret.emplace_back(t, b);
t = 1; b = 0;
}
}
}
return ret;
}
int main() {
scanf("%d", &n);
scanf("%d", &d);
scanf("%s", s);
VPI t = calc(henkan(s));
for (int i = 0; i < t.size(); i++) {
ans[t[i].second] += t[i].first;
}
for (int i = 0; i < d; i++) {
printf("%d ", ans[i]);
}
printf("%d\n", ans[d]);
return 0;
}
nanasili