답안 #967693

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
967693 2024-04-22T16:08:51 Z jadai007 Vudu (COCI15_vudu) C++14
126 / 140
276 ms 47396 KB
#include<bits/stdc++.h>
#define int long long

using namespace std;

const int N = 1e6 + 1e4;
int n,k,arr[1000010], ans, qs[1000010], fw[N];
vector<int> vc;

void update(int idx, int val){
    for(int i = idx; i<=n; i+=(i&-i)) fw[i]+=val;
}

int query(int idx){
    int sum = 0;
    for(int i = idx; i>0; i-=(i&-i)) sum+=fw[i];
    return sum;
}

signed main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    cin >> n;
    for(int i = 1; i<=n; ++i) cin >> arr[i];
    for(int i = 1; i<=n; ++i) qs[i] = qs[i - 1] + arr[i];
    cin >> k;
    for(int i = 0; i<=n; ++i) vc.push_back(qs[i] - k*i);
    sort(vc.begin(), vc.end());
    vc.erase(unique(vc.begin(), vc.end()));
    for(int i = 0; i<=n; ++i){
        int idx = lower_bound(vc.begin(), vc.end(), qs[i] - k*i) - vc.begin();
        ans+=query(idx+1);
        update(idx+1, 1);
    }
    cout << ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2648 KB Output is correct
2 Correct 2 ms 2652 KB Output is correct
3 Correct 2 ms 2652 KB Output is correct
4 Correct 276 ms 30896 KB Output is correct
5 Correct 134 ms 20148 KB Output is correct
6 Runtime error 135 ms 47396 KB Execution killed with signal 11
7 Correct 215 ms 29368 KB Output is correct
8 Correct 198 ms 29472 KB Output is correct
9 Correct 249 ms 31672 KB Output is correct
10 Correct 217 ms 30000 KB Output is correct