제출 #445501

#제출 시각아이디문제언어결과실행 시간메모리
445501ak2006Vudu (COCI15_vudu)C++14
140 / 140
461 ms65536 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vb = vector<bool>;
using vvb = vector<vb>;
using vi = vector<int>;
using vvi = vector<vi>;
using vl = vector<ll>;
using vvl = vector<vl>;
using vc = vector<char>;
using vvc = vector<vc>;
using vs = vector<string>;
const ll mod = 1e9 + 7,inf = 1e18;
#define pb push_back
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
void setIO()
{
    fast;
}
struct BIT
{
    int n;
    vl bit;
    BIT(int _n)
    {
        n = _n;
        bit.assign(n + 10,0);
    }
    void update(int i,ll inc)
    {
        for (;i<=n;i+=i&(-i))bit[i] += inc;
    }
    ll sum(int i)
    {
        ll ret = 0;
        for (;i>0;i-=i&(-i))ret += bit[i];
        return ret;
    }
};
int main()
{
    setIO();
    ll n,p;
    cin>>n;
    vvl a(n + 1,vl(2));
    for (int i = 1;i<=n;i++)cin>>a[i][0],a[i][1] = i;
    cin>>p;
    for (int i = 1;i<=n;i++)a[i][0] = a[i - 1][0] + a[i][0] - p;

    sort(a.begin() + 1,a.end());

    BIT val(n);
    ll out = 0;
    for (int i = 1;i<=n;i++){
        ll now = val.sum(a[i][1] - 1);
        out += now;
        val.update(a[i][1],1);
        if (a[i][0] >= 0)out++;
    }
    cout<<out;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...