Submission #716656

#TimeUsernameProblemLanguageResultExecution timeMemory
716656NonozeAddk (eJOI21_addk)C++14
92 / 100
52 ms7416 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using db = double;
using str = string;

#define int ll
#define MN 1e5+5
#define MOD 1000000007
#define endl '\n'
#define endlfl endl << flush
#define dmp(x) cerr<<__LINE__<<" "<<#x<<" "<<x<<endl
const int INF=1e9 + 10;

const auto beg = std::chrono::high_resolution_clock::now();
void dbg_time() {
	auto us = (double)std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now() - beg).count();
	cerr << "Operation time: " << (long double)us/1000000 << " seconds." << endl;
}

int n, k, q;

void solve()
{
	cin >> n >> k;
	vector<int> a(n+1);
	vector<int> P(n+1, 0);
	vector<int> Pmultl(n+1, 0);
	vector<int> Pmultr(n+1, 0);
	for (int i = 1; i <= n; ++i)
	{
		cin >> a[i];
		P[i]=P[i-1]+a[i];
		Pmultl[i]=Pmultl[i-1]+a[i]*(n-i+1);
		Pmultr[i]=Pmultr[i-1]+a[i]*i;
	}
	cin >> q;
	while(q--) {
		int action; cin >> action;
		if (action==1) {
			int input; cin >> input;
		} else {
			int l, r, m; cin >> l >> r >> m;
			int sum=(P[r]-P[l-1])*m;
			sum-=(Pmultl[l+m-1]-Pmultl[l-1]) - (P[l+m-1]-P[l-1])*(n-(l+m-1)+1);
			sum-=(Pmultr[r]-Pmultr[r-m+1]) - (P[r]-P[r-m+1])*(r-m+1);
			cout << sum << endl;
		}
	}
	return;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int tt=1;// cin >> tt;
	while(tt--) solve();
	dbg_time();
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...