70分,求调
查看原帖
70分,求调
945845
Chernobog_Belobog楼主2024/1/21 14:36

rt

#include <bits/stdc++.h>
using namespace std;

int n , a[100007] = {} , s[3][100007] = {} , c[100007] = {} , hashh[500007] = {} , ans = -1;

int main()
{
    cin >> n;
    const int k = 1e5 + 3;
    for (int i = 1 ; i <= n ; i++) {
        cin >> a[i];
        if (a[i]) s[1][i] = s[1][i - 1] + 1 , s[0][i] = s[0][i - 1];
        else s[0][i] = s[0][i - 1] + 1 , s[1][i] = s[1][i - 1];
        c[i] = s[0][i] - s[1][i];
    }
    if (s[0][n] == s[1][n]) return cout << n , 0;
    for (int i = 1 ; i <= n ; i++) {
        if (!hashh[c[i] + k]) hashh[c[i] + k] = i;
        else ans = max(ans , (i - hashh[c[i] + k]));
    }
    if (ans == -1) cout << 0;
    else cout << ans;
    return 0;
}
2024/1/21 14:36
加载中...