Submission #1690806


Source Code Expand

#include <bits/stdc++.h>
 
#define _overload(_1,_2,_3,name,...) name
#define _rep(i,n) _range(i,0,n)
#define _range(i,a,b) for(int i=(int)(a);i<(int)(b);++i)
#define rep(...) _overload(__VA_ARGS__,_range,_rep,)(__VA_ARGS__)
 
#define _rrep(i,n) _rrange(i,n,0)
#define _rrange(i,a,b) for(int i=(int)(a)-1;i>=(int)(b);--i)
#define rrep(...) _overload(__VA_ARGS__,_rrange,_rrep,)(__VA_ARGS__)
 
#define _all(arg) begin(arg),end(arg)
#define uniq(arg) sort(_all(arg)),(arg).erase(unique(_all(arg)),end(arg))
#define getidx(ary,key) lower_bound(_all(ary),key)-begin(ary)
#define clr(a,b) memset((a),(b),sizeof(a))
#define bit(n) (1LL<<(n))
 
// #define DEBUG
 
#ifdef DEBUG
    #define dump(...) fprintf(stderr, __VA_ARGS__)
#else
    #define dump(...)
#endif
 
template<class T>bool chmax(T &a, const T &b) { return (a<b)?(a=b,1):0;}
template<class T>bool chmin(T &a, const T &b) { return (b<a)?(a=b,1):0;}
 
using namespace std;
using ll=long long;
using vi=vector<int>;
using vll=vector<ll>;
 
const double EPS = 1e-10;
const double PI = acos(-1.0);
const ll inf =1LL << 62;
const ll mod=1000000007LL;
const int dx[4]={1,0,-1,0};
const int dy[4]={0,1,0,-1};
 
 
ll extgcd(ll a,ll b,ll& x,ll& y){x=1,y=0;ll g=a;if(b!=0) g=extgcd(b,a%b,y,x),y-=a/b*x;return g;}
ll ADD(const ll &a, const ll &b,const ll &mod) { return (a+b)%mod;}
ll SUB(const ll &a, const ll &b,const ll &mod) { return (a-b+mod)%mod;}
ll MUL(const ll &a, const ll &b,const ll &mod) { return (1LL*a*b)%mod;}
ll DIV(const ll &a, const ll &b,const ll &mod) {ll x,y; extgcd(b,mod,x,y);return MUL(a,(x+mod)%mod,mod);}
 
random_device rd;
mt19937 mt(rd());
uniform_int_distribution<int> dice(1,6);
uniform_real_distribution<double> score(0.0,10.0);

template <typename T>
class Bit {
 public:
  Bit(int size) : size_(size) {
    data_.resize(size + 1);
  }

  // 0-indexed
  void add(int index, T value) {
    if (index < 0 || index >= size_) return;
    ++index;
    while (index <= size_) {
      data_[index] += value;
      index += index & -index;
    }
  }

  // [0, index]
  T sum(int index) {
    if (index < 0 || index >= size_) return 0;
    ++index;
    T ret = 0;
    while (index > 0) {
      ret += data_[index];
      index -= index & -index;
    }
    return ret;
  }

 private:
  std::vector<T> data_;
  int size_;
};

void compress(vll const& vec, map<ll, int>& zip, vll& unzip){
    unzip = vec;

    sort(_all(unzip));
    unzip.erase(unique(_all(unzip)), unzip.end());
    unzip.emplace_back(inf);

    rep(i, unzip.size()) zip[unzip[i]] = i;
}

int main(void){
    cin.tie(0);
    ios::sync_with_stdio(false);

    int n; ll K; cin >> n >> K;
    vll a(n); for(auto& e : a) cin >> e;
    ll sum = 0;
    rep(i, n){
        sum += a[i];
        a[i] = sum - (i + 1) * K;
    }

    map<ll, int> zip; vll unzip;
    compress(a, zip, unzip);
    rep(i, n) a[i] = zip[a[i]];

    Bit<int> bt(n);
    ll res = 0;
    rep(i, n){
        res += bt.sum(a[i]);
        bt.add(a[i], 1);
    }

    cout << res << endl;

    return 0;
}

Submission Info

Submission Time
Task E - Meaningful Mean
User nokoTaro
Language C++14 (GCC 5.4.1)
Score 0
Code Size 3127 Byte
Status WA
Exec Time 174 ms
Memory 18020 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 600
Status
AC × 1
WA × 2
AC × 5
WA × 18
Set Name Test Cases
Sample a01, a02, a03
All a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23
Case Name Status Exec Time Memory
a01 WA 1 ms 256 KB
a02 AC 1 ms 256 KB
a03 WA 1 ms 256 KB
b04 WA 1 ms 256 KB
b05 WA 32 ms 4224 KB
b06 AC 150 ms 16740 KB
b07 WA 107 ms 10368 KB
b08 WA 109 ms 10368 KB
b09 AC 163 ms 16740 KB
b10 WA 159 ms 17380 KB
b11 WA 1 ms 256 KB
b12 WA 2 ms 384 KB
b13 WA 51 ms 6220 KB
b14 WA 174 ms 17764 KB
b15 AC 83 ms 10496 KB
b16 WA 151 ms 18020 KB
b17 WA 170 ms 16740 KB
b18 WA 172 ms 16740 KB
b19 AC 150 ms 17252 KB
b20 WA 40 ms 4224 KB
b21 WA 32 ms 4224 KB
b22 WA 164 ms 16740 KB
b23 WA 161 ms 16740 KB