Submission #1262224

#TimeUsernameProblemLanguageResultExecution timeMemory
1262224user736482Mixture (BOI20_mixture)C++20
0 / 100
0 ms496 KiB

#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
vector<pair<pair<ld,ld>,ld>>btl;
ll n,a,b,c,A,B,C;
map<ld,ll>s[2];
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;
    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;
    //cout<<x<<" "<<y<<"g\n";
    if(y==0){
        if(x==0)return {0,1};
        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){
    if(co.ff==0){
        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);
            
        }
        if(czy1)cout<<1;
        else if(czy2)cout<<2;
        else if(check())cout<<3;
        else cout<<0;
        cout<<"\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...