結果
| 問題 | No.3581 分数対称差更新区間計数取得 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-07-05 15:37:53 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.90.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,223 bytes |
| 記録 | |
| コンパイル時間 | 4,351 ms |
| コンパイル使用メモリ | 382,788 KB |
| 実行使用メモリ | 119,984 KB |
| 最終ジャッジ日時 | 2026-07-05 15:39:58 |
| 合計ジャッジ時間 | 37,041 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 15 TLE * 9 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#if __has_include("all.hpp")
#include "all.hpp"
#else
#include <atcoder/all>
#endif
using namespace atcoder;
//遅延セグ木・区間更新・区間和テンプレ
struct S{
long long value;
int size;
};
using F = long long;
S op(S a, S b){ return {a.value+b.value, a.size+b.size}; }
//データとデータの演算
S e(){ return {0, 0}; }
//初期値(データ)
S mapping(F f, S x){ return {(f?x.size-x.value:x.value), x.size}; }
//データと演算子の演算
F composition(F f, F g){ return (f+g)%2;}
//演算子と演算子の演算
F id(){ return 0; }
//初期値(演算子)
int main(void){
const int n=1e6+1;
int q;
cin>>q;
vector<S> v(n, {0, 1});
lazy_segtree<S, op, e, F, mapping, composition, id> seg(v);
while(q--){
long long i,l,r;
cin>>i>>l>>r;
int bef=-1;
for(int j=1;j<=i;j++){
if(i/j!=bef){
seg.apply(i/j,1);
bef=i/j;
}
if(j*(j+1)>=i){
if(i/j==bef)bef--;
seg.apply(0,bef+1,1);
break;
}
}
cout<<seg.prod(l,r+1).value<<endl;
}
return 0;
}