贪心硬币
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1e6+10;
int pos[2*maxn];
char str[maxn];
int main()
{
int text=0;
while(~scanf("%s",str+1))
{int cnt1=0,cnt0=0,ans=0;
for(int i=1;str[i];i++)
{
if(str[i]=='1')
{
cnt1++; //1的个数
}
else
cnt0++;
int k=cnt1-cnt0+maxn;//为了temp不取负数,加上100000
if(pos[k]||cnt1==cnt0)
{
ans=max(ans,i-pos[k]);//如果之前的temp差值有数的话,那么就更新新的,或者
//1和0的个数相等 那么就是当前位置是最大的
}
else
{
pos[k]=i; //如果都不满足的话更新temp
}
}
printf("%d %d
",++text,ans);
}
}