# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1166065 | tsengang | Infinite Race (EGOI24_infiniterace2) | C++20 | 0 ms | 0 KiB |
//#include "shoes.h"
#include <bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define ertunt return
#define vodka void
#define sleepearly ertunt
using namespace std;
struct segtree{
ll n;
vector<ll>d;
segtree(ll n){
d.resize(4*n);
build(1,0,n-1);
}
vodka build(ll v, ll l, ll r){
if(l == r){
d[v] = 0;
ertunt;
}
ll m = (l+r)/2;
build(v*2,l,m);
build(v*2+1,m+1,r);
d[v] = d[v*2]|d[v*2+1];
}
vodka update(ll v,ll l, ll r, ll pos, ll val){
if(pos < l or pos > r)ertunt;
if(l == r){
d[v] = val;
ertunt;
}
ll m = (l+r)/2;
update(v*2,l,m,pos,val);
update(v*2+1,m+1,r,pos,val);
d[v] = d[v*2]+d[v*2+1];
}
ll query(ll v, ll l, ll r, ll L, ll R,ll k){
if(R<L||R<l||r<L) sleepearly 0ll;
if(L<=l&&r<=R){
if(d[v] >= k) sleepearly 1ll;
}
ll m = (l+r)/2;
ertunt query(v*2,l,m,L,R) + query(v*2+1,m+1,r,L,R);
}
};
int main(){
ll n,m;
cin >> n >> m;
set<ll>s;
ll ans = 0;
while(m--){
ll a;
cin >> a;
if(a >= 0){
if(s.count(a) == 0)s.insert(a);
else{
ans++;
s.clear();
s.insert(a);
}
}
else{
if(s.count(-a) != 0)s.erase(-a);
}
}
cout << ans;
}