1 条题解

  • 0
    @ 2025-4-7 21:19:29

    C++ :

    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define lowbit(i) ((i)&(-i))
    
    const int maxn = 1000;
    int n;
    int c[maxn];
    int A[maxn];
    
    void update(int x, int v,int maxNum) {
        for(int i = x; i <= maxNum; i += lowbit(i)) {
            c[i] += v;
        }
    }
    
    int getSum(int x) {
        int sum = 0;
        for(int i = x; i > 0; i -= lowbit(i)) {
            sum += c[i];
        }
        return sum;
    }
    
    int strToNum(string s, int &maxNum) {
        int num = 0;
        int temp = 0;
        for(int i = 0; i < s.size(); i++) {
            if(s[i] >= '0' && s[i] <= '9') {
                temp = temp * 10 + s[i] - '0';
            } else {
                A[num++] = temp;
                if(maxNum < temp) {
                    maxNum = temp;
                }
                temp = 0;
            }
        }
        A[num++] = temp;
        if(maxNum < temp) {
            maxNum = temp;
        }
        return num;
    }
    
    int main() {
        string s;
        while(getline(cin, s)) {
            memset(c, 0, sizeof(c));
            memset(A, 0, sizeof(A));
            int maxNum = 0;
            int num = strToNum(s, maxNum);
            long long sum = 0;
            for(int i = 0; i < num; i++) {
                update(A[i], 1,maxNum);
                sum += getSum(maxNum) - getSum(A[i]);
            }
            printf("%lld\n", sum);
        }
        return 0;
    }
    
    
    
    • 1

    信息

    ID
    1187
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者