結果

問題 No.1099 Range Square Sum
コンテスト
ユーザー aogera
提出日時 2026-01-18 19:00:46
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
結果
WA  
実行時間 -
コード長 719 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,621 ms
コンパイル使用メモリ 343,516 KB
実行使用メモリ 22,448 KB
最終ジャッジ日時 2026-01-18 19:00:56
合計ジャッジ時間 9,114 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 2 WA * 28
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include<bits/stdc++.h>
using namespace std;
#include<atcoder/lazysegtree>
using ll=long long;
struct S{
	ll sqr,sum,len;
};
int main(){
	int N;cin>>N;
	vector<S> init(N);
	for(int i=0;i<N;i++){
		ll a;cin>>a;
		init[i]={a*a,a,1};
	}
	atcoder::lazy_segtree<S,
												[](S a,S b){return S{a.sqr+b.sqr,a.sum+b.sum,a.len+b.len};},
												[]{return S{0,0,0};},
												ll,
												[](ll f,S x){return S{x.sqr+x.sum*f*2+f*f,x.sum+f*x.len,x.len};},
												[](ll f,ll g){return f+g;},
												[]{return 0;}> seg(init);
	int Q;cin>>Q;
	while(Q--){
		ll com,l,r,x;
		cin>>com>>l>>r;
		l--;
		if(com==1){
			cin>>x;
			seg.apply(l,r,x);
		}
		else if(com==2){
			cout<<seg.prod(l,r).sqr<<endl;
		}
	}
}
0