类似前缀和的思想,又学到了。
评测结果
编译成功
测试数据 #0: Accepted, time = 15 ms, mem = 1252 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 1248 KiB, score = 10
测试数据 #2: Accepted, time = 0 ms, mem = 1256 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 1256 KiB, score = 10
测试数据 #4: Accepted, time = 0 ms, mem = 1252 KiB, score = 10
测试数据 #5: Accepted, time = 31 ms, mem = 1248 KiB, score = 10
测试数据 #6: Accepted, time = 93 ms, mem = 1252 KiB, score = 10
测试数据 #7: Accepted, time = 124 ms, mem = 1256 KiB, score = 10
测试数据 #8: Accepted, time = 140 ms, mem = 1252 KiB, score = 10
测试数据 #9: Accepted, time = 140 ms, mem = 1256 KiB, score = 10
Accepted, time = 543 ms, mem = 1256 KiB, score = 100
#include <iostream>
using namespace std;
int _tbl[2] = {-1, 1};
int _fs[200001], N;
#define fs(x) _fs[(x) + 100000]
int main(void)
{
int max = 0;
int i, s;
for(cin >> N, s = 0, i = 1; i<=N; ++i) {
int o;
cin >> o;
s += _tbl[o];
if (s) {
if (!fs(s)) fs(s) = i;
else if (max < i - fs(s)) max = i - fs(s);
} else if (max < i) max = i;
}
cout << max << endl;
return 0;
}