結果

問題 No.3210 Fixed Sign Sequense
ユーザー tau0529
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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 << ' ';
    //*/
}
0