提出 #74702321


ソースコード 拡げる

#include <bits/stdc++.h>
using ull = unsigned long long int;
using ll = long long int;
using lll = __int128;
using namespace std;
const int mod = 998244353;
int d[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
inline string sread() {
    string s;
    char ch = getchar();
    // 跳过空白字符
    while (ch == ' ' || ch == '\n' || ch == '\r') ch = getchar();
    // 读取非空白字符
    while (ch != ' ' && ch != '\n' && ch != '\r' && ch != EOF) {
        s += ch;
        ch = getchar();
    }
    return s;
}
ll read(){
    ll k = 0,f = 1;
    char c = getchar();
    while(c < '0' || c > '9')
    {
        if(c == '-')f = -1;
        c = getchar();
    }
    while(c >= '0' && c <= '9')k = k * 10 + c - '0',c = getchar();
    return k * f; // 别忘记标记的负数要乘进去
}
// 调用时用 n = in();
void print(ll x){
    if(x < 0)putchar('-'),x = -x;
    if(x < 10)putchar(x + '0');
    else print(x / 10),putchar(x % 10 + '0');
}
// 直接调用 out(n) 就行了
ll ksm(ll base, ll e){
    ll res = 1;
    while(e){
        if(e & 1){
            res = res * base % mod;
        }
        base = base * base % mod;
        e >>= 1;
    }
    return res;
}//ksm板子
vector<vector<ll>> matrix_mul (vector<vector<ll>>& a, vector<vector<ll>>& b) {
    int l1 = a.size(), l2 = b[0].size();
    vector<vector<ll>>res(l1, vector<ll>(l2, 0));
    for(int i = 0; i < l1; i++){
        for(int k = 0; k < a[0].size(); k++){
            if(a[i][k]){
                for(int j = 0; j < l2; j++){
                    res[i][j] = (res[i][j] + a[i][k] * b[k][j]);
                }
            }
        }
    }
    return res;
}// 矩阵a * 矩阵b(矩阵乘法)
void Solve(){
    // 求数组中逆序对个数等于k的子数组个数
    // 注意到直接求=k不好求, 所以转化为求 (<= k) - (<= k - 1)的个数
    ll n = read(), k = read();
    vector<ll>p(n + 1);
    for(int i = 1; i <= n; i++){
        p[i] = read();
    }
    vector<ll>tree(n + 1, 0);
    auto add = [&](int x, ll v) -> void{
        for(int i = x; i <= n; i += (i & -i)){
            tree[i] += v;
        }
    };
    auto query = [&](int x) -> ll{
        ll res = 0;
        for(int i = x; i; i -= (i & -i)){
            res += tree[i];
        }
        return res;
    };
    auto cal = [&](ll limit) -> ll{
        for(int i = 0; i <= n; i++){
            tree[i] = 0;
        } //清空树状数组
        ll p1 = 1, p2 = 1;
        ll cur = 0;
        ll res = 0;
        while(p2 <= n){
            // 先加入p2
            cur += query(n) - query(p[p2]); // 找之前比自己大的个数
            add(p[p2], 1);
            while(cur > limit && p1 <= p2){
                cur -= query(p[p1] - 1);
                add(p[p1], -1);
                p1++;
            }
            res += (p2 - p1 + 1);
            p2++;
        }
        return res;
    };
    cout << (cal(k) - (k ? cal(k - 1) : 0)) << '\n';
}
signed main(){
    int T = 1;
    while(T--){
        Solve();
    }
    return 0;
}

提出情報

提出日時
問題 F - Interval Inversion Count
ユーザ wmxw
言語 C++23 (GCC 15.2.0)
得点 500
コード長 3118 Byte
結果 AC
実行時間 89 ms
メモリ 11200 KiB

コンパイルエラー

./Main.cpp: In function 'std::vector<std::vector<long long int> > matrix_mul(std::vector<std::vector<long long int> >&, std::vector<std::vector<long long int> >&)':
./Main.cpp:53:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         for(int k = 0; k < a[0].size(); k++){
      |                        ~~^~~~~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 3
AC × 55
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3512 KiB
00_sample_01.txt AC 1 ms 3444 KiB
00_sample_02.txt AC 1 ms 3488 KiB
01_random_03.txt AC 36 ms 8080 KiB
01_random_04.txt AC 34 ms 8468 KiB
01_random_05.txt AC 22 ms 6200 KiB
01_random_06.txt AC 18 ms 5964 KiB
01_random_07.txt AC 27 ms 7400 KiB
01_random_08.txt AC 18 ms 6328 KiB
01_random_09.txt AC 24 ms 6464 KiB
01_random_10.txt AC 82 ms 10908 KiB
01_random_11.txt AC 73 ms 11004 KiB
01_random_12.txt AC 84 ms 11032 KiB
01_random_13.txt AC 67 ms 11192 KiB
01_random_14.txt AC 62 ms 11192 KiB
01_random_15.txt AC 80 ms 10968 KiB
01_random_16.txt AC 85 ms 11152 KiB
01_random_17.txt AC 74 ms 11192 KiB
01_random_18.txt AC 59 ms 10984 KiB
01_random_19.txt AC 89 ms 11104 KiB
01_random_20.txt AC 55 ms 10984 KiB
01_random_21.txt AC 59 ms 11036 KiB
01_random_22.txt AC 59 ms 11048 KiB
01_random_23.txt AC 85 ms 11192 KiB
01_random_24.txt AC 22 ms 11156 KiB
01_random_25.txt AC 37 ms 10964 KiB
01_random_26.txt AC 39 ms 11112 KiB
01_random_27.txt AC 30 ms 11200 KiB
01_random_28.txt AC 35 ms 11108 KiB
01_random_29.txt AC 39 ms 10960 KiB
01_random_30.txt AC 22 ms 10984 KiB
01_random_31.txt AC 46 ms 10968 KiB
01_random_32.txt AC 47 ms 11072 KiB
01_random_33.txt AC 46 ms 11036 KiB
01_random_34.txt AC 47 ms 10984 KiB
01_random_35.txt AC 47 ms 11032 KiB
01_random_36.txt AC 1 ms 3568 KiB
01_random_37.txt AC 32 ms 11108 KiB
01_random_38.txt AC 34 ms 11112 KiB
01_random_39.txt AC 30 ms 11200 KiB
01_random_40.txt AC 36 ms 10996 KiB
01_random_41.txt AC 32 ms 10968 KiB
01_random_42.txt AC 30 ms 11104 KiB
01_random_43.txt AC 29 ms 11080 KiB
01_random_44.txt AC 33 ms 11108 KiB
01_random_45.txt AC 37 ms 11080 KiB
01_random_46.txt AC 37 ms 10968 KiB
01_random_47.txt AC 36 ms 11004 KiB
01_random_48.txt AC 35 ms 11004 KiB
01_random_49.txt AC 36 ms 10972 KiB
01_random_50.txt AC 31 ms 9920 KiB
01_random_51.txt AC 25 ms 9752 KiB
01_random_52.txt AC 29 ms 9436 KiB
01_random_53.txt AC 26 ms 9824 KiB
01_random_54.txt AC 33 ms 10336 KiB