• CH4201楼兰图腾


    不知道再哪里炸了longlong,懒得想了,全开就好了

    #include <bits/stdc++.h>
    using namespace std;
    long long a[200100], c[200100], c1[200100], c2[200100], n;
    long long ans1 = 0, ans2 = 0;
    long long getsum(long long p) {
        long long ans = 0;
        for (; p; p -= p & -p) {
            ans += c[p];
        }
        return ans;
    }
    void insert1(long long id, long long p) {
        for (; id <= n + 1; id += id & -id) c1[id] += p;
    }
    void insert2(long long id, long long p) {
        for (; id <= n + 1; id += id & -id) c2[id] += p;
    }
    void insert(long long p) {
        for (long long i = p; i <= n + 1; i += i & -i) c[i] += 1;
    }
    long long getsum1(long long p) {
        long long ans = 0;
        for (; p; p -= p & -p) ans += c1[p];
        return ans;
    }
    long long getsum2(long long p) {
        long long ans = 0;
        for (; p; p -= p & -p) ans += c2[p];
        return ans;
    }
    int main() {
        // freopen("xf.in","r",stdin);
        // freopen("xf.out","w",stdout);
        scanf("%d", &n);
        for (long long i = 1; i <= n; i++) {
            scanf("%lld", &a[i]);
            ans1 += getsum1(a[i] - 1);
            ans2 += getsum2(n + 1) - getsum2(a[i]);
            insert(a[i]);
            insert1(a[i], getsum(n + 1) - getsum(a[i]));
            insert2(a[i], getsum(a[i] - 1));
        }
        printf("%lld %lld
    ", ans1, ans2);
        return 0;
    }
  • 相关阅读:
    Access更新数据
    linux如何修改主机名
    实习一个月
    网络游戏开发过程(转)
    实习
    不可征服曼德拉
    作为一个河南人
    屌丝男关于游戏市场的一些想法
    实习2周
    一个C/S结构的优秀例子: 延迟补偿在C/S架构游戏协议设计和优化中的应用
  • 原文地址:https://www.cnblogs.com/mybing/p/13608365.html
Copyright © 2020-2023  润新知