简单题,主要想每次的时候都相当于本来左1右-1变成了-1 1即,-1往左移了一位,所以没碰撞一次就可以看成-1往左移了一位。
然后最后的序列显然是-1 -1 -1 .....-1 -1 1 1 ..... 1 1。
结果就是原序列-1下标之和减去最终序列-1下标之和。
#include<iostream>
using namespace std;
int main(){
int n;
int a[10000];
int count=0;
int sum=0;
int id=0;
while(cin>>n){
if(n==-1)break;
count=0;
sum=0;
++id;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]==-1){
count++;
sum+=i;
}
}
cout<<"Case "<<id<<": "<<sum-count*(count-1)/2<<endl;
}
}