水题,但是我更水,查错查了好久,原来是更新时出错了,细节决定成败,以后一定要注意
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
long long f( long long A[], int n ) { // n = size of A
long long ans = 0;
for( int i = 0; i < n; i++ )
ans+= (n-1-i*2)*A[i];
return ans;
}
long long a[100010];
int main()
{
int i,j,t,k,m,n,h,x,y,q;
char ch[110];
scanf("%d",&t);
for(k=1;k<=t;k++)
{
scanf("%d%d",&n,&q);
printf("Case %d:\n",k);
for(i=0;i<n;i++)
scanf("%lld",&a[i]);
long long sum=f(a,n),v;
while(q--)
{
scanf("%d",&h);
if(h==1)
printf("%lld\n",sum);
else if(h==0)
{
scanf("%d%lld",&x,&v);
long long ll=n-1-x*2;
sum+=ll*(v-a[x]);
a[x]=v;//这里一开始忘了更新了,导致后面出错,坑死我了
}
}
}
return 0;
}