結果

問題 No.924 紲星
ユーザー t98slidert98slider
提出日時 2024-11-02 20:38:50
言語 C++17(gcc12)
(gcc 12.3.0 + boost 1.87.0)
結果
AC  
実行時間 1,029 ms / 4,000 ms
コード長 2,037 bytes
コンパイル時間 5,176 ms
コンパイル使用メモリ 276,476 KB
実行使用メモリ 47,104 KB
最終ジャッジ日時 2024-11-02 20:39:13
合計ジャッジ時間 14,306 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 16
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int N, Q;
cin >> N >> Q;
vector<int> a(N), c;
for(auto &&v : a) cin >> v;
c = a;
sort(c.begin(), c.end());
c.erase(unique(c.begin(), c.end()), c.end());
int m = c.size();
vector<vector<int>> tb(m);
for(int i = 0; i < N; i++){
int p = lower_bound(c.begin(), c.end(), a[i]) - c.begin();
tb[p].emplace_back(i);
}
vector<pair<int,int>> query(Q);
vector<int> ng(Q, -1), ok(Q, m);
vector<internal::simple_queue<int>> que(m);
for(auto &&[l, r] : query){
cin >> l >> r;
l--;
}
for(int i = 0; i < Q; i++) que[m / 2].push(i);
for(int i = 0; i < 18; i++){
fenwick_tree<int> fw(N);
for(int j = 0; j < m; j++){
for(auto p : tb[j]) fw.add(p, 1);
while(!que[j].empty()){
auto qi = que[j].front();
que[j].pop();
auto [l, r] = query[qi];
if(fw.sum(l, r) >= (r - l + 1) / 2){
ok[qi] = j;
}else{
ng[qi] = j;
}
if(ng[qi] + 1 < ok[qi]){
int mid = (ok[qi] + ng[qi]) / 2;
que[mid].push(qi);
}
}
}
}
for(int i = 0; i < Q; i++) que[ok[i]].push(i);
fenwick_tree<int> fw(N);
fenwick_tree<ll> fw2(N);
for(int i = 0; i < N; i++){
fw.add(i, -1);
fw2.add(i, a[i]);
}
vector<ll> ans(Q);
for(int i = 0; i < m; i++){
for(auto p : tb[i]){
fw2.add(p, -2 * a[p]);
fw.add(p, 2);
}
while(!que[i].empty()){
auto qi = que[i].front();
que[i].pop();
auto [l, r] = query[qi];
ans[qi] = fw2.sum(l, r) + (ll)c[i] * fw.sum(l, r);
}
}
for(auto &&v : ans) cout << v << '\n';
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0