結果
問題 |
No.1441 MErGe
|
ユーザー |
![]() |
提出日時 | 2021-03-26 23:28:21 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 999 bytes |
コンパイル時間 | 904 ms |
コンパイル使用メモリ | 80,052 KB |
実行使用メモリ | 14,208 KB |
最終ジャッジ日時 | 2024-11-29 01:45:29 |
合計ジャッジ時間 | 12,941 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 3 WA * 25 |
ソースコード
#include <iostream> #include <vector> #include <atcoder/lazysegtree> using namespace std; using namespace atcoder; long long curn; long long op(long long a,long long b) {return a+b;} long long e() {return 0LL;} long long mapping(long long F,long long x){return F*x;} long long comp(long long F,long long G){return F*G;} long long id() {return 1LL;} long long chk(long long x){ return x<curn;} int main(){ long long n,q; cin>>n>>q; vector<long long> a(n),init(n,1),csum(n+1,0); for(long long i=0;i<n;i++) cin>>a[i],csum[i+1]=csum[i]+a[i]; lazy_segtree<long long,op,e,long long,mapping,comp,id> seg(init); long long t,l,r; for(long long i=0;i<q;i++){ cin>>t>>l>>r; curn=l; l=seg.max_right(0,chk); curn=r; r=seg.max_right(0,chk);r++; if(t==1){ seg.apply(l,r,0); seg.all_prod(); seg.set(l,1); }else{ cout<<csum[r]-csum[l]<<endl; } } return 0; }