結果
問題 | No.1803 Remainder of Sum |
ユーザー |
![]() |
提出日時 | 2021-12-20 01:08:00 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 33 ms / 2,000 ms |
コード長 | 2,392 bytes |
コンパイル時間 | 1,715 ms |
コンパイル使用メモリ | 195,676 KB |
最終ジャッジ日時 | 2025-01-27 04:05:59 |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 8 |
ソースコード
#include<bits/stdc++.h>//using namespace std;#pragma GCC target("avx2")#pragma GCC optimize("O3")#pragma GCC optimize("unroll-loops")#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")#define rep(i, j, n) for(int i = int(j); i < int(n); i++)#define REP(i, j, n) for(int i = int(j); i <= int(n); i++)#define per(i, j, n) for(int i = int(j); int(n) <= i; i--)#define ALL(a) (a).begin(),(a).end()#define revALL(a) (a).rbegin(),(a).rend()#define pb push_back#define mp std::make_pair#define mtp std::make_tuple#define ln "\n"using std::endl;using std::cin;using std::cout;#define ll long longusing std::vector;using std::string;using std::upper_bound;using std::lower_bound;const ll MOD = int(1e9+7);const ll MAX = 1e6+10;const ll inf = (1ll << 60);//modpowll modpow(ll X, ll Y, ll mod){ll ret = 1;while(Y){if(Y & 1){ret *= X;ret %= mod;}X *= X;X %= mod;Y >>= 1;}return ret % mod;}//binary_indexed_treetemplate<typename T>struct binary_indexed_tree{int N;vector<T> bit;binary_indexed_tree(int n):N(n){bit.resize(N+1,0);}T addition(T a, T b){return a+b;}void add(int x,T a){x++;for(; x<=N; x+=(x&-x)) bit[x] = addition(bit[x], a);}T sum(int x){x++;T ret=0;for(; x>0; x-=(x&-x)) ret = addition(ret, bit[x]);return ret;}ll lower_bound(T X){if(sum(N-1)<X) return -1;ll ret=0, memo=1;T sum=0;while(memo*2 <= N) memo *= 2;while(0 < memo){if(memo+ret<=N && addition(sum, bit[memo+ret])<X){sum = addition(sum, bit[memo+ret]);ret+=memo;}memo/=2;}return ret;}};//mainint main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);cout << std::fixed << std::setprecision(15);ll T; cin >> T;while(T--){ll N,M; cin >> N >> M;// 1,2,3,...,M-1,0,1,2,3,...,M-1,0,1,2,3,...,ll ans = 0;if(M <= N){ans = M/2;}else{ll X = M-N-1;ans = X+X*(X+1)/2;ans += X;ans += (N-X-1)/2;}cout << ans << ln;}}