#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; class BIT{ /*binary indexed tree*/ private: vector data; int size; public: BIT(int n): data(n+1,0),size(n){ return; } long long sum(int l, int r ){ // return sum in [l+1,r] or (l,r] return sum_(r)-sum_(l); } long long sum_(int i){ // return sum (0, i] long long ans = 0; while( 0 < i ){ ans += data[i]; i -= i&-i; // 11010110 -> 1010100 } return ans; } void add(int i, int x){ // add x to i while( i <= size ){ data[i] += x; i+= i&-i; } return; } }; int main(){ int N,K; scanf("%d%d",&N,&K); BIT b(10000001); for( int i = 0 ; i < N; i++ ){ int w; scanf("%d",&w); if(w>0 && b.sum(w-1,1000000) < K){ b.add(w,1); } if(w<0 && b.sum(-w-1,-w) >0){ b.add(-w,-1); } } printf("%d\n",(int)b.sum_(1000000)); return 0; }