看的最远问题C++如何编程

有N(奇数)只奶牛排成一行,为了安全2头最高大的奶牛排在队伍前端(最左边)和后端(最右边)。这些奶牛不习惯抬头,向前或向后看时,看到有和它同样高或比它高的奶牛就会被挡住视线,它会认为那就是最远的牛。
输入每头奶牛的身高,请问正中间的那头奶牛向前向后看,以为队伍的长度是多少?

循环中每次都 b++; 直到a[i] >= a[(n + 1) / 2] 就 break 跳出循环
c 也同样

#include <bits/stdc++.h>
using namespace std;
int a[1001];
int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    int b = 0;
    for (int i = (n + 1) / 2 - 1; i >= 1; i--)
    {
        b++;
        if (a[i] >= a[(n + 1) / 2])
            break;

    }
    int c = 0;
    for (int i = (n + 1) / 2 + 1; i <= n; i++)
    {
        c++;
        if (a[i] >= a[(n + 1) / 2])
            break;
    }
    cout << b + c + 1;
    return 0;
}

如有帮助,望采纳!谢谢!

int b = 0;改成 int b = 1;
int c = 0;改成 int c = 1;
还有就是,for循环中的if一旦不成立,就要立即结束循环。完整代码如下:

#include<bits/stdc++.h>
using namespace std;
int a[1001];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    int b=1; //从1开始
    for(int i=(n+1)/2-1;i>=1;i--)
    {
        if(a[i]<a[(n+1)/2]) 
            b++;
        else //否则就结束循环
            break;
    }
    int c=1; //从1开始
    for(int i=(n+1)/2+1;i<=n;i++)
    {
        if(a[i]<=a[(n+1)/2]) 
            c++;
        else
            break;
    }
    cout<<b+c+1;
    return 0;
}

我的程序如下:
#include<bits/stdc++.h>
using namespace std;
int a[1001];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int b=0;
for(int i=(n+1)/2-1;i>=1;i--){
if(a[i]<a[(n+1)/2])
b++;
}
int c=0;
for(int i=(n+1)/2+1;i<=n;i++)
{
if(a[i]<a[(n+1)/2]) c++;
}
cout<<b+c+1;
return 0;
但是不对,请大佬指教!!!!