题解 AT1894 【総和】
这个题当然可以用暴力做,但是我们观察一下……
a[i]被加的次数为min(min(i,n-i+1),min(m,n-m+1))
所以就OK了。
#include<bits/stdc++.h>
using namespace std;
long long n,m,a,b,tot;
int main(){
cin>>n>>m;b=n-m+1;
for(long long i=0;i^n;i++)
cin>>a,tot+=a*(min(min(i+1,n-i),min(m,b)));
cout<<tot<<endl;
return 0;
}