結果
| 問題 |
No.1441 MErGe
|
| コンテスト | |
| ユーザー |
zumin
|
| 提出日時 | 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;
}
zumin