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

rt

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

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

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[1][i] - s[0][i];
    }
    for (int i = 1 ; i <= n ; i++) {
        if (!f[c[i] + k]) {
            hashh[c[i] + k] = i;
            f[i] = 1;
        } else {
            ans = max(ans , i - hashh[c[i] + k] + 1);
        }
    }
    if (ans == -1) cout << 0;
    else cout << ans;
    return 0;
}
2024/1/21 14:31
加载中...