#include #define rep(i,a,b) for(int i=int(a);i bit; //1-indexed BinaryIndexedTree(int n): N(n), bit(n+1, 0){} void add(int a, int w){ for(int x = a; x <=N; x+=x&(-x)) bit[x] += w; } int sum(int a){ //1~aまでsum int ret = 0; for(int x = a; x>0; x-=x&(-x)) ret += bit[x]; return ret; } }; main(){ int N,K; cin >> N >> K; int max_w = 1000000; BinaryIndexedTree bit(max_w); map mp; rep(i,0,N){ int w; cin >> w; if(w > 0){ int cnt = bit.sum(max_w) - bit.sum(w-1); if(cnt >= K)continue; mp[w]++; bit.add(w, 1); }else{ if(mp[-w] == 0)continue; mp[-w]--; bit.add(-w, -1); } } cout << bit.sum(max_w) << endl; }