rt,思路是记录到第 i 个数之前(包括)有几个1,再去看这个数字之后(不包括)有几个0,如果两个值相等就输出,求hack和正确做法。
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const ll MAXN=1e5+5;
ll t,n,a[MAXN];
int main(){
cin>>t;
for (int i = 1; i <=t ; ++i) {
scanf("%lld",&n);
ll num0=0,num1=0;
for (int j = 1; j <=n ; ++j) {
scanf("%lld",&a[j]);
if(!a[j]){
++num0;
}
}
for (int j = 1; j <=n ; ++j) {
if(a[j]){
++num1;
}else if(!a[j]){
--num0;
}
if(num0==num1){
printf("%lld\n",num0);
break;
}
}
}
return 0;
}