結果
問題 |
No.3210 Fixed Sign Sequense
|
ユーザー |
|
提出日時 | 2025-07-25 22:04:14 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,290 bytes |
コンパイル時間 | 2,626 ms |
コンパイル使用メモリ | 279,064 KB |
実行使用メモリ | 8,384 KB |
最終ジャッジ日時 | 2025-07-25 22:04:20 |
合計ジャッジ時間 | 4,372 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 37 WA * 1 |
ソースコード
#include <bits/stdc++.h> using namespace std; /* ショトカ登録 cin cout endl return void int double string char pair make_pair first second tuple make_tuple get sort erase swap map set insert stoi reverse to_string auto bool true false vector queue priority_queue front pop_frpnt size substr push_back pop_back push pop top if for while break continue next_permutation __builtin_popcount */ //無限 int inf = 1020304050; int64_t INF = 1020304050607080900; //モッド int64_t mod = 998244353; //all マクロ #define all(v) v.begin(), v.end() //int64_t typedef int64_t lint; int main () { //少数以下 cout << fixed << setprecision(15); lint N; cin >> N; string S; cin >> S; vector<lint> U(N, 0), D(N,0); for (lint i = 0; i < N; i++) { if (S[i] == '+') U[i]++; if (S[i] == '-') D[i]++; } for (lint i = N - 2; i >= 0; i--) U[i] += U[i + 1]; for (lint i = 0; i < N - 1; i++) D[i + 1] += D[i]; lint MAX = 0; for (lint i = -1; i < N; i++) { lint c = 0; if (i >= 0) c += D[i]; if (i + 1 < N) c += U[i + 1]; if (i >= 0 && i + 1 < N && (S[i] == '0' || S[i + 1] == '0')) c++; MAX = max(MAX, c); } cout << MAX << endl; //for (auto x : U) cout << x << ' '; //*/ }