Submission #52903977


Source Code Expand

// LUOGU_RID: 157309667
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int maxn = 4e5 + 10;
int n;
struct BIT
{
    int c[maxn];
    int lowbit(int x){return x & (-x);}
    void update(int u,int val){while(u <= n){c[u] += val;u += lowbit(u);}}
    int query(int u){int ans = 0;while(u > 0){ans += c[u],u -= lowbit(u);}return ans;}
}sum,cnt;
pair<int,int> a[maxn];

signed main()
{
    cin >> n;
    for(int i = 1;i <= n;i++)
    {
        cin >> a[i].first;
        a[i].second = i;
    }
    sort(a + 1,a + n + 1);
    int ans = 0;
    for(int i = 1;i <= n;i++)
    {
        ans += cnt.query(a[i].second) * a[i].first - sum.query(a[i].second);
        cnt.update(a[i].second,1);
        sum.update(a[i].second,a[i].first);
    }
    cout << ans;
    return 0;
}

Submission Info

Submission Time
Task F - Double Sum
User feather_life
Language C++ 20 (gcc 12.2)
Score 500
Code Size 825 Byte
Status AC
Exec Time 144 ms
Memory 16144 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 11
Set Name Test Cases
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
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3464 KiB
00_sample_01.txt AC 1 ms 3508 KiB
01_random_00.txt AC 10 ms 4372 KiB
01_random_01.txt AC 144 ms 15876 KiB
01_random_02.txt AC 96 ms 12076 KiB
01_random_03.txt AC 142 ms 16076 KiB
01_random_04.txt AC 57 ms 8740 KiB
01_random_05.txt AC 144 ms 16072 KiB
02_corner_00.txt AC 83 ms 15956 KiB
02_corner_01.txt AC 1 ms 3464 KiB
02_corner_02.txt AC 108 ms 16144 KiB