This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int, int>
#define PI M_PI - 1e-2
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
int S, P, G, N;
cin >> S >> P >> G >> N;
G += S + P;
multiset<pii> pts;
multiset<double> angles;
vector<pair<multiset<pii>::iterator, multiset<double>::iterator>> add;
int ctrl = 0, ctrt = 0, t = 0;
while(N--){
char c;
cin >> c;
if(c == 'A'){
int x, y, z, x1, y1, divide;
cin >> x >> y >> z;
z += x + y;
x1 = x * G - S * z;
y1 = y * G - P * z;
divide = gcd(x1, y1);
pii v = {x1?x1 / divide:0, y1?y1 / divide:0};
if(pts.find({-v.first, -v.second}) != pts.end()) ctrl++;
auto it2 = pts.insert(v);
auto it = angles.insert(atan2(double(y) / double(z) - double(P) / double(G), double(x) / double(z) - double(S) / double(G)));
if(it == angles.begin())
if(*angles.rbegin() - *it > PI) ctrt=1;
else
if(*it - *--it > PI) ctrt=1;
if(it == angles.end())
if(*it - *angles.begin() > PI) ctrt=1;
else
if(*++it - *it > PI) ctrt=1;
add.push_back({it2, it});
}
else{
int r, x, y;
cin >> r;
auto it2 = add[r-1].first;
auto it = add[r-1].second;
if(pts.find({-(*it2).first, -(*it2).second}) != pts.end()) ctrl--;
pts.erase(it2);
if(it == angles.begin())
if(*angles.rbegin() - *it > PI) ctrt=0;
else
if(*it - *--it > PI) ctrt=0;
if(it == angles.end())
if(*it - *angles.begin() > PI) ctrt=0;
else
if(*++it - *it > PI) ctrt=0;
angles.erase(it);
}
if(pts.find({0, 0}) != pts.end())
cout << "1\n";
else if(ctrl)
cout << "2\n";
else if(ctrt)
cout << "3\n";
else
cout << "0\n";
}
}
Compilation message (stderr)
Mixture.cpp: In function 'int main()':
Mixture.cpp:30:15: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
30 | if(it == angles.begin())
| ^
Mixture.cpp:34:15: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
34 | if(it == angles.end())
| ^
Mixture.cpp:47:15: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
47 | if(it == angles.begin())
| ^
Mixture.cpp:51:15: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
51 | if(it == angles.end())
| ^
Mixture.cpp:41:20: warning: unused variable 'x' [-Wunused-variable]
41 | int r, x, y;
| ^
Mixture.cpp:41:23: warning: unused variable 'y' [-Wunused-variable]
41 | int r, x, y;
| ^
Mixture.cpp:15:29: warning: unused variable 't' [-Wunused-variable]
15 | int ctrl = 0, ctrt = 0, t = 0;
| ^
# | 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... |