結果
問題 |
No.3210 Fixed Sign Sequense
|
ユーザー |
|
提出日時 | 2025-07-25 21:59:35 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,200 bytes |
コンパイル時間 | 3,008 ms |
コンパイル使用メモリ | 278,896 KB |
実行使用メモリ | 8,388 KB |
最終ジャッジ日時 | 2025-07-25 21:59:44 |
合計ジャッジ時間 | 4,380 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 WA * 9 |
ソースコード
#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 = 0; i < N - 1; i++) { lint c = 0; c += D[i]; c += U[i + 1]; if (S[i] == '0' || S[i + 1] == '0') c++; MAX = max(MAX, c); } cout << MAX << endl; //*/ }