#include<bits/stdc++.h>
using namespace std;
int num1=1;//左水滴数量
int num2=1;//右水滴数量
void slove()
{
int n,p;
cin>>n>>p;
vector<int> a(n);
for(int i=0;i<n;i++)
cin>>a[i];
num1=a[p-1]==9;
num2=num1;
int l=p-2;
int r=p;
while(1)
{
if(l>=0&&num1)
{
a[l]++;
num1--;
if(a[l]==10)
{
l--;
num1++;
num2++;
}
}
else if(r<=n-1&&num2)
{
a[r]++;
num2--;
if(a[r]==10)
{
r++;
num1++;
num2++;
}
}
else
break;
}
}
int main()
{
int T;
cin>>T;
while(T--)
{
slove();
cout<<num1<<" "<<num2<<endl;
}
return 0;
}
-
设置两个指针变量r,l,指向p的左相邻和右相邻,两个整形变量num1、num2记录左溢出和右溢出的水滴数
-
左相邻+1,左溢出水滴-1;右相邻+1,右溢出-1
-
条件判断:如果左相邻+1后等于10,左、右溢出的水滴数+1,r、l向两边走