Please sign in first.
Submission #73415443
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll INF = (ll)2e18;
const int inf = (int)1e6;
class SegRSQ{
// セグメント木RSQ 区間和
public:
vector<ll> seg;
int n;
SegRSQ(int N) : seg(2*N){
for(int i = 0; i < 2*N; i++){
seg[i] = 0;
}
n = N;
}
void update(int pos, ll x){
pos += n-1; // 1-indexed
seg[pos] = x;
while(pos > 1){
// 上層部の区間和を更新する
pos /= 2;
// seg[pos]が更新されなかったらbreakでもよいと思う
seg[pos] = seg[pos*2] + seg[pos*2+1];
}
}
void add(int pos, ll x){
// segに差分配列を持たせると区間加算が実現できる
// 区間加算を行うとき、加算による更新が必要
pos += n-1; // 1-indexed
seg[pos] += x;
while(pos > 1){
// 上層部の区間和を更新する
pos /= 2;
// seg[pos]が更新されなかったらbreakでもよいと思う
seg[pos] = seg[pos*2] + seg[pos*2+1];
}
}
ll segSum(int left, int right, int pos, int first, int last){
// [left,right)に注意する
if(right <= first or left >= last) return 0;
if(left <= first and last <= right) return seg[pos];
int mid = (first+last)/2;
ll AnswerL = segSum(left,right,pos*2 ,first,mid);
ll AnswerR = segSum(left,right,pos*2 + 1,mid,last);
return AnswerL+AnswerR;
}
};
int init(int N){
int siz = 1;
while(siz < N){
siz *= 2;
}
return siz;
}
int main(){
int N;
cin >> N;
int n = init(N);
SegRSQ segtree(n);
ll ans = 0,pls = 0;
for(int i = 0; i < N; i++){
int A;
cin >> A;
if(i > 0){
pls = segtree.segSum(A+1,N+1,1,1,n+1);
ans += pls;
}
segtree.update(A,1);
// cout << "i = " << i << endl;
// cout << "pls = " << pls << endl;
}
cout << ans << endl;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Organizing the Bookshelf |
| User | bakazikara |
| Language | C++23 (GCC 15.2.0) |
| Score | 466 |
| Code Size | 2325 Byte |
| Status | AC |
| Exec Time | 83 ms |
| Memory | 7444 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 466 / 466 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample01.txt, sample02.txt, sample03.txt |
| All | sample01.txt, sample02.txt, sample03.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in50.txt, in51.txt, in52.txt, in53.txt, in54.txt, in55.txt, in56.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| in01.txt | AC | 1 ms | 3524 KiB |
| in02.txt | AC | 1 ms | 3488 KiB |
| in03.txt | AC | 1 ms | 3568 KiB |
| in04.txt | AC | 1 ms | 3568 KiB |
| in05.txt | AC | 1 ms | 3600 KiB |
| in06.txt | AC | 1 ms | 3524 KiB |
| in07.txt | AC | 1 ms | 3520 KiB |
| in08.txt | AC | 36 ms | 5280 KiB |
| in09.txt | AC | 48 ms | 7320 KiB |
| in10.txt | AC | 62 ms | 7316 KiB |
| in11.txt | AC | 81 ms | 7376 KiB |
| in12.txt | AC | 69 ms | 7344 KiB |
| in13.txt | AC | 63 ms | 7324 KiB |
| in14.txt | AC | 76 ms | 7260 KiB |
| in15.txt | AC | 63 ms | 7444 KiB |
| in16.txt | AC | 64 ms | 7344 KiB |
| in17.txt | AC | 64 ms | 7260 KiB |
| in18.txt | AC | 81 ms | 7316 KiB |
| in19.txt | AC | 64 ms | 7400 KiB |
| in20.txt | AC | 66 ms | 7380 KiB |
| in21.txt | AC | 64 ms | 7436 KiB |
| in22.txt | AC | 65 ms | 7260 KiB |
| in23.txt | AC | 63 ms | 7260 KiB |
| in24.txt | AC | 1 ms | 3476 KiB |
| in25.txt | AC | 1 ms | 3488 KiB |
| in26.txt | AC | 1 ms | 3568 KiB |
| in27.txt | AC | 2 ms | 3572 KiB |
| in28.txt | AC | 2 ms | 3588 KiB |
| in29.txt | AC | 1 ms | 3412 KiB |
| in30.txt | AC | 18 ms | 4244 KiB |
| in31.txt | AC | 1 ms | 3532 KiB |
| in32.txt | AC | 1 ms | 3460 KiB |
| in33.txt | AC | 2 ms | 3760 KiB |
| in34.txt | AC | 1 ms | 3524 KiB |
| in35.txt | AC | 1 ms | 3488 KiB |
| in36.txt | AC | 83 ms | 7376 KiB |
| in37.txt | AC | 63 ms | 7444 KiB |
| in38.txt | AC | 63 ms | 7320 KiB |
| in39.txt | AC | 63 ms | 7376 KiB |
| in40.txt | AC | 81 ms | 7316 KiB |
| in41.txt | AC | 18 ms | 4372 KiB |
| in42.txt | AC | 21 ms | 5396 KiB |
| in43.txt | AC | 63 ms | 7260 KiB |
| in44.txt | AC | 64 ms | 7316 KiB |
| in45.txt | AC | 1 ms | 3480 KiB |
| in46.txt | AC | 1 ms | 3584 KiB |
| in47.txt | AC | 1 ms | 3524 KiB |
| in48.txt | AC | 1 ms | 3480 KiB |
| in49.txt | AC | 1 ms | 3632 KiB |
| in50.txt | AC | 1 ms | 3568 KiB |
| in51.txt | AC | 1 ms | 3444 KiB |
| in52.txt | AC | 1 ms | 3480 KiB |
| in53.txt | AC | 1 ms | 3524 KiB |
| in54.txt | AC | 1 ms | 3444 KiB |
| in55.txt | AC | 1 ms | 3532 KiB |
| in56.txt | AC | 1 ms | 3480 KiB |
| sample01.txt | AC | 1 ms | 3600 KiB |
| sample02.txt | AC | 1 ms | 3452 KiB |
| sample03.txt | AC | 1 ms | 3620 KiB |