Submission #932584

#TimeUsernameProblemLanguageResultExecution timeMemory
932584tminh_hk20SIR (COI15_sir)C++14
0 / 100
314 ms25292 KiB
#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>=2;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]); } } 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]; int id; 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 r=1; int res=0; int ans=-1e18; for(int i=0;i<sz;i++){ if(cross(v[id]-a[0],v[i]-a[0])<=0) id=i; } for(int i=0;i<n;i++){ while(!(cross(v[id]-a[i],v[(id+1)%sz]-a[i])<=0)){ id++; id%=sz; } //cout<<i<<" "<<baoloi[id].x<<" "<<baoloi[id].y<<endl; while(cross(a[r+1]-a[i],v[id]-a[i])<0){ //congdientich res+=get(a[i],a[r],a[r+1]); r++; } // cout <<">"<<i<<" "<<r<<endl; ans=max(ans,res); res-=get(a[i],a[i+1],a[r]); } cout<<ans; } //>1 4 //>2 4 //>3 0 //>4 1 //>5 3
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...