有没有人会这一题,给一个代码,感觉特别难,是我在准备信息学奥林匹克竞赛中碰到的
#include<bits/stdc++.h>
using namespace std;
int a[10000];
int T;
int n,s,ans,sum;
int main()
{
cin>>T;
while(T--)
{
ans=0;
cin>>n>>s;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]==1)
{
ans++;
}
}
if(ans<s)
{
cout<<-1<<endl;
continue;
}
if(ans==s)
{
cout<<0<<endl;
continue;
}
int q=1,z=n;
while(ans>s)
{
if(a[q]==1)
{
ans--;
q++;
sum++;
}
else
{
if(a[z]==1)
{
ans--;
z--;
sum++;
}
else
{
int s=0;
for(int i=q;i<=n;i++)
{
s++;
if(a[i]==1)
{
break;
}
}
int ss=0;
for(int i=z;i>=1;i--)
{
ss++;
if(a[i]==1)
{
break;
}
}
if(ss<s)
{
z--;
}
else
{
q++;
}
sum++;
}
}
}
cout<<sum<<endl;
}
return 0;
}
样例能过,但是由于不知道是哪里的题,不能完全保证能AC