Submission #59499776
Source Code Expand
#include<bits/stdc++.h>
#include"atcoder/all"
using namespace std;
using namespace atcoder;
#define rep(i,n) for(int i=0;i<n;i++)
#define all(a) a.begin(),a.end()
typedef long long ll;
typedef vector<ll> vi;
constexpr ll mod = 998244353;
typedef modint998244353 mi;
ll x[100005],y[100005];
typedef pair<ll,ll> P;
P operator- (const P &lhs,const P &rhs) {
return {rhs.first-lhs.first,rhs.second-lhs.second};
}
ll det(P x,P y){
return x.first*y.second-x.second*y.first;
}
vector<P> convex_hull(vector<P>&ps,int n){
sort(ps.begin(),ps.end());
int k=0;
vector<P>qs(2*n);
rep(i, n){
while(k>1&&det(qs[k-1]-qs[k-2],ps[i]-qs[k-1])<=0)k--;
qs[k++]=ps[i];
}
for (int i=n-2,t=k;i>=0;i--){
while(k>t&&det(qs[k-1]-qs[k-2],ps[i]-qs[k-1])<=0)k--;
qs[k++]=ps[i];
}
qs.resize(k - 1);
return qs;
}
ll my_floor_sum(ll n,ll m,ll a,ll b){
ll ans=0;
ans+=n*(b/m);
b%=m;
ll ma=(a%m+m)%m;
ll dv=(a-ma)/m;
ans+=dv*(n-1)*n/2;
ans+=floor_sum(n,m,ma,b);
return ans;
}
int main(){
int n;cin>>n;
rep(i,n)cin>>x[i]>>y[i];
vector<P>ps(n);
rep(i,n)ps[i]={x[i],y[i]};
vector<P>ch=convex_hull(ps,n);
int ch_size=ch.size();
ch.push_back(ch[0]);
ll ans=0;
rep(i,ch_size){
if(ch[i]<ch[i+1]){
ll m=ch[i+1].first-ch[i].first;
if(m==0){
continue;
}
else{
ll a=ch[i+1].second-ch[i].second;
ll b=m*ch[i].second-1;
ans-=my_floor_sum(m,m,a,b);
}
}
else{
ll m=ch[i].first-ch[i+1].first;
if(m==0){
continue;
}
else{
ll a=ch[i+1].second-ch[i].second;
ll b=m*ch[i].second;
ans+=my_floor_sum(m,m,a,b);
}
}
}
ll x_min=1e18,x_max=-1e18;
ll y_min=-1,y_max=1e9;
rep(i,n){
x_min=min(x_min,x[i]);
x_max=max(x_max,x[i]);
}
rep(i,n){
if(x[i]==x_min)y_min=max(y_min,y[i]);
if(x[i]==x_max)y_max=min(y_max,y[i]-1);
}
ans+=y_min-y_max;
cout<<ans-n<<endl;
}
Submission Info
Submission Time |
|
Task |
041 - Piles in AtCoder Farm(★7) |
User |
Rho17 |
Language |
C++ 20 (gcc 12.2) |
Score |
7 |
Code Size |
2262 Byte |
Status |
AC |
Exec Time |
65 ms |
Memory |
9688 KiB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Subtask3 |
Score / Max Score |
0 / 0 |
2 / 2 |
2 / 2 |
3 / 3 |
Status |
|
|
|
|
Set Name |
Test Cases |
Sample |
00_sample_0_123.txt, 00_sample_1_123.txt, 00_sample_2_123.txt, 00_sample_3__23.txt, 00_sample_4___3.txt |
Subtask1 |
00_sample_0_123.txt, 00_sample_1_123.txt, 00_sample_2_123.txt, 01_corner_0_123.txt, 01_corner_1_123.txt, 01_corner_2_123.txt, 01_corner_3_123.txt, 02_random_0_123.txt, 02_random_1_123.txt, 02_random_2_123.txt |
Subtask2 |
00_sample_0_123.txt, 00_sample_1_123.txt, 00_sample_2_123.txt, 00_sample_3__23.txt, 01_corner_0_123.txt, 01_corner_1_123.txt, 01_corner_2_123.txt, 01_corner_3_123.txt, 02_random_0_123.txt, 02_random_1_123.txt, 02_random_2_123.txt, 03_corner_0__23.txt, 03_corner_1__23.txt, 03_corner_2__23.txt, 03_corner_3__23.txt, 04_random_0__23.txt, 04_random_1__23.txt, 04_random_2__23.txt |
Subtask3 |
00_sample_0_123.txt, 00_sample_1_123.txt, 00_sample_2_123.txt, 00_sample_3__23.txt, 00_sample_4___3.txt, 01_corner_0_123.txt, 01_corner_1_123.txt, 01_corner_2_123.txt, 01_corner_3_123.txt, 02_random_0_123.txt, 02_random_1_123.txt, 02_random_2_123.txt, 03_corner_0__23.txt, 03_corner_1__23.txt, 03_corner_2__23.txt, 03_corner_3__23.txt, 04_random_0__23.txt, 04_random_1__23.txt, 04_random_2__23.txt, 05_random_0___3.txt, 05_random_1___3.txt, 05_random_2___3.txt, 06_maxima_0___3.txt, 06_maxima_1___3.txt, 06_maxima_2___3.txt, 06_maxima_3___3.txt, 06_maxima_4___3.txt, 06_maxima_5___3.txt, 06_maxima_6___3.txt |
Case Name |
Status |
Exec Time |
Memory |
00_sample_0_123.txt |
AC |
3 ms |
3700 KiB |
00_sample_1_123.txt |
AC |
1 ms |
3620 KiB |
00_sample_2_123.txt |
AC |
1 ms |
3556 KiB |
00_sample_3__23.txt |
AC |
1 ms |
3552 KiB |
00_sample_4___3.txt |
AC |
1 ms |
3548 KiB |
01_corner_0_123.txt |
AC |
1 ms |
3480 KiB |
01_corner_1_123.txt |
AC |
1 ms |
3712 KiB |
01_corner_2_123.txt |
AC |
1 ms |
3472 KiB |
01_corner_3_123.txt |
AC |
1 ms |
3560 KiB |
02_random_0_123.txt |
AC |
1 ms |
3516 KiB |
02_random_1_123.txt |
AC |
1 ms |
3508 KiB |
02_random_2_123.txt |
AC |
1 ms |
3656 KiB |
03_corner_0__23.txt |
AC |
33 ms |
9688 KiB |
03_corner_1__23.txt |
AC |
29 ms |
9444 KiB |
03_corner_2__23.txt |
AC |
3 ms |
3908 KiB |
03_corner_3__23.txt |
AC |
32 ms |
8892 KiB |
04_random_0__23.txt |
AC |
26 ms |
7732 KiB |
04_random_1__23.txt |
AC |
28 ms |
8364 KiB |
04_random_2__23.txt |
AC |
6 ms |
3980 KiB |
05_random_0___3.txt |
AC |
14 ms |
4432 KiB |
05_random_1___3.txt |
AC |
58 ms |
9172 KiB |
05_random_2___3.txt |
AC |
21 ms |
5288 KiB |
06_maxima_0___3.txt |
AC |
60 ms |
9524 KiB |
06_maxima_1___3.txt |
AC |
60 ms |
9432 KiB |
06_maxima_2___3.txt |
AC |
60 ms |
9644 KiB |
06_maxima_3___3.txt |
AC |
60 ms |
9584 KiB |
06_maxima_4___3.txt |
AC |
63 ms |
9460 KiB |
06_maxima_5___3.txt |
AC |
65 ms |
9432 KiB |
06_maxima_6___3.txt |
AC |
1 ms |
3568 KiB |