#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int,int>
const int N=6e5+5;
struct vec{
int x, y;
}a[N+10], b[N+10];
vec operator - (vec a, vec b){
return {a.x-b.x,a.y-b.y};
}
bool operator < (vec a, vec b){
if (a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
int cross(vec a, vec b){
return a.x*b.y-b.x*a.y;
}
int n, m, c, s[N+10];
vector<vec> v;
void convexhull(){
sort(b+1,b+m+1);
//upper
v.push_back(b[1]);
for (int i=2;i<=m;i++){
while(v.size()>=2 && cross(b[i]-v[v.size()-1],v[v.size()-2]-v[v.size()-1])>0) v.pop_back();
v.push_back(b[i]);
}
// lower
for (int i=m-1;i>=1;i--){
while(v.size()>=2 && cross(b[i]-v[v.size()-1],v[v.size()-2]-v[v.size()-1])>0) v.pop_back();
v.push_back(b[i]);
}
if (v.size()>1) v.pop_back();
}
int get(vec a, vec b, vec c){
if(a.x==b.x&&a.y==b.y) return 0;
return abs(a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y));
}
vec luu[N];
signed main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>luu[i].x>>luu[i].y;
}
for(int i=n-1;i>=0;i--){
a[i]=luu[n-1-i];
}
// for (int i=0;i<n;i++) cout <<">"<< a[i].x<<" "<<a[i].y<<endl;
for (int i=1;i<=n;i++) a[n-1+i] = a[i-1];
cin>>m;
for(int i=1;i<=m;i++){
cin>>b[i].x>>b[i].y;
}
convexhull();
int sz=v.size();
// cout <<"baoloi"<<endl;
// for(vec i:v){
// cout<<i.x<<" "<<i.y<<endl;
// }
// cout <<endl;
int j =0; c = v.size();
for (int i=0;i<c;i++){
if (cross(v[j]-a[0],v[i]-a[0])<=0){
j = i;
}
}
int res = 0;
int far = 1;
int tmp = 0;
for (int i=0;i<n;i++){
while(!(cross(v[j]-a[i],v[(j+1)%c]-a[i])<=0)){
j++; j%=c;
}
while(cross(a[far+1]-a[i],v[j]-a[i])<0) tmp+=get(a[i],a[far],a[far+1]), far++;
res = max(res, tmp);
// cout <<i<<" "<<j<<" "<<far<<endl;
tmp-=get(a[i],a[i+1],a[far]);
}
cout <<res<<endl;
}
//>1 4
//>2 4
//>3 0
//>4 1
//>5 3
Compilation message
sir.cpp: In function 'int main()':
sir.cpp:68:9: warning: unused variable 'sz' [-Wunused-variable]
68 | int sz=v.size();
| ^~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
6488 KB |
Output is correct |
2 |
Correct |
1 ms |
6492 KB |
Output is correct |
3 |
Correct |
1 ms |
6492 KB |
Output is correct |
4 |
Correct |
1 ms |
6488 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
6488 KB |
Output is correct |
2 |
Correct |
2 ms |
6492 KB |
Output is correct |
3 |
Correct |
4 ms |
6492 KB |
Output is correct |
4 |
Correct |
2 ms |
6492 KB |
Output is correct |
5 |
Correct |
3 ms |
6492 KB |
Output is correct |
6 |
Correct |
4 ms |
6748 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
307 ms |
25300 KB |
Output is correct |
2 |
Correct |
289 ms |
24264 KB |
Output is correct |
3 |
Correct |
259 ms |
23520 KB |
Output is correct |
4 |
Correct |
92 ms |
14936 KB |
Output is correct |
5 |
Correct |
240 ms |
19168 KB |
Output is correct |
6 |
Correct |
269 ms |
40904 KB |
Output is correct |