#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000007
#define INF 1000000019
#define POT (1<<20)
#define INFL 1000000000000000099
ll n,a,b,c,A,B,C;
map<ld,ll>s[3];
bool czy(pair<ld,ld>x,pair<ld,ld>y){
return x.ff*y.ss>=x.ss*y.ff;
}
bool check(){
if(s[0].empty() || s[1].empty())return 0;
ld p1=(*s[0].begin()).ff;
ld p2=(*s[1].begin()).ff;
ld k1=(*--s[0].end()).ff;
ld k2=(*--s[1].end()).ff;
//cout<<p1<<" "<<k1<<" "<<p2<<" "<<k2<<" "<<(-k1>p2)<<"\n";
if(k1<p2 || k2<p1)return 0;
return 1;
}
pair<ld,ll>gt(ll x,ll y,ll z){
x=C*x-z*A;
y=C*y-z*B;
ll k=abs(__gcd(x,y));
if(k){
x/=k;
y/=k;
}
//cout<<x<<" "<<y<<"g\n";
if(y==0){
if(x==0)return {0,2};
return {(x>0)*2*(ld)INFL-(ld)INFL,1};
}
return {(ld)x/(ld)y,(y>0)};
}
pair<ld,ll>x[100007];
ll ak=1;
ll czy1=0,czy2=0;
void f(pair<ld,ll>co,ll mlt){
//cout<<co.ff<<" ";
if(co==pair<ld,ll>{0,2}){
czy1+=mlt;
s[co.ss][co.ff]++;
return;
}
czy2+=mlt*s[!co.ss][co.ff];
if(s[!co.ss][co.ff]==0)s[!co.ss].erase(co.ff);
s[co.ss][co.ff]++;
}
int main(){
cin>>A>>B>>C;
cin>>n;
ll ak2=1;
for(ll i=0;i<n;i++){
char ch;
cin>>ch;
if(ch=='A'){
cin>>a>>b>>c;
pair<ld,ll>ak=gt(a,b,c);
x[ak2++]=ak;
f(ak,1);
}
else{
cin>>a;
pair<ld,ll>ak=x[(ll)a];
s[ak.ss][ak.ff]--;
f(ak,-1);
s[ak.ss][ak.ff]--;
if(s[ak.ss][ak.ff]==0)s[ak.ss].erase(ak.ff);
}
// cout<<s[0].size()<<" "<<s[1].size()<<"\n";
if(czy1)cout<<1;
else if(czy2)cout<<2;
else if(check())cout<<3;
else cout<<0;
cout<<"\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |