提出 #52970218
ソースコード 拡げる
// LUOGU_RID: 157503153
#include<iostream>
#include<algorithm>
#define ll long long
using std::sort;
const int N=4e5+5;
int n,q,i;
ll t[N],ans=0;
ll T[N];
int rank[N];
int lowbit(int x){
return x&-x;
}
struct NODE{
int val;
int id;
}a[N];
bool operator<(const NODE&x,const NODE&y){
if(x.val==y.val) return x.id<y.id;
return x.val<y.val;
}
void update(int x,int k){
for(;x<=n;x+=lowbit(x))t[x]+=k;
}
ll query(int l){
ll ans=0;
for(;l;l-=lowbit(l)){
ans+=t[l];
}
return ans;
}
void update2(int x,int k){
for(;x<=n;x+=lowbit(x))T[x]+=k;
}
ll query2(int l){
ll ans=0;
for(;l;l-=lowbit(l)){
ans+=T[l];
}
return ans;
}
int b[N];
int main(){
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
std::cin>>n;
for(i=1;i<=n;++i){
std::cin>>a[i].val;
a[i].id=i;
b[i]=a[i].val;
}
sort(a+1,a+n+1);
for(i=1;i<=n;++i){
rank[a[i].id]=i;
}
for(i=n;i>=1;--i){
ll S=query(n)-query(rank[i]);
ll s=query2(n)-query2(rank[i]);
update(rank[i],b[i]);
update2(rank[i],1);
ans+=S-s*b[i];
}
std::cout<<ans;
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - Double Sum |
| ユーザ | tomxi_ |
| 言語 | C++ 17 (gcc 12.2) |
| 得点 | 500 |
| コード長 | 1070 Byte |
| 結果 | AC |
| 実行時間 | 82 ms |
| メモリ | 16032 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 500 / 500 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 02_corner_00.txt, 02_corner_01.txt, 02_corner_02.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3480 KiB |
| 00_sample_01.txt | AC | 1 ms | 3544 KiB |
| 01_random_00.txt | AC | 6 ms | 4456 KiB |
| 01_random_01.txt | AC | 81 ms | 15988 KiB |
| 01_random_02.txt | AC | 55 ms | 12164 KiB |
| 01_random_03.txt | AC | 82 ms | 16032 KiB |
| 01_random_04.txt | AC | 34 ms | 8816 KiB |
| 01_random_05.txt | AC | 81 ms | 15984 KiB |
| 02_corner_00.txt | AC | 45 ms | 16032 KiB |
| 02_corner_01.txt | AC | 1 ms | 3544 KiB |
| 02_corner_02.txt | AC | 49 ms | 16028 KiB |