#include #include #include #include #include #include #include #include #include #include #include #define rep(x,to) for(int (x)=(0);(x)<(to);(x)++) #define repf(x,fr,to) for(int (x)=(fr);(x)<(to);(x)++) using namespace std; const int MX=1000000; int zmp[MX+10]; int main() { int n, k; const int gsz=200; cin >> n >>k; vector w(n); repf(i,0,n) cin >>w[i]; //map zmp; vector ct(*max_element(w.begin(), w.end())/gsz+2,0); repf(i,0,n){ int q=w[i]; if(q>=0){ int nxs= q/gsz +1; int c = accumulate(ct.begin()+nxs,ct.end(),0); //auto it=zmp.lower_bound(q); //for(;it != zmp.end() && it->firstsecond; c += accumulate(zmp+q, zmp+min(MX+1,nxs*gsz),0); if(c0) zmp[-q]--, ct[-q/gsz]--; } } cout << accumulate(ct.begin(),ct.end(),0) << endl; return 0; }