이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
/**
* @date 2022-12-26 10:42:24
* @author numberes
* 煮不在乎.RAmen!
*/
#include<bits/stdc++.h>
#include "aliens.h"
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define ll long long
using namespace std;
ll g[1000005];
int t[1000005],dq[1000005],dl,dr;
int n,m,k;
int l[1000005],r[1000005],p[1000005];
struct line{
ll k,b;
}li[1000005];
long double itsect(int a,int b){
return (long double)(li[b].b-li[a].b)/(li[a].k-li[b].k);
}
void calc(ll c){
memset(g,0,sizeof(g));memset(t,0,sizeof(t));
dl=dr=1;dq[1]=1;
li[1].k=-2*(ll)(l[1]-1);
li[1].b=g[1]+(ll)(l[1]-1)*(ll)(l[1]-1)+c;
for(int i=2;i<=n+1;i++){
while(dl+1<=dr && itsect(dq[dl],dq[dl+1])<r[i-1]) ++dl;
g[i]=li[dq[dl]].k*r[i-1]+li[dq[dl]].b+(ll)r[i-1]*(ll)r[i-1];
t[i]=t[dq[dl]]+1;
li[i].k=-2*(ll)(l[i]-1);
li[i].b=g[i]+(ll)(l[i]-1)*(ll)(l[i]-1)-(ll)max(0,r[i-1]-l[i]+1)*
(ll)max(0,r[i-1]-l[i]+1)+c;
while(dl+1<=dr && itsect(i,dq[dr])<itsect(dq[dr],dq[dr-1])) dr--;
dq[++dr]=i;
}
}
ll solve(){
ll lb=-1,ub=2e12;
while(lb+1<=ub-1){
ll mid=(lb+ub)>>1;
calc(mid);
if(t[n+1]>k) lb=mid;
else ub=mid;
}
calc(ub);
return g[n+1]-k*ub;
}
ll take_photos(int _n,int _m,int _k,vector<int> _r,vector<int> _c){
n=_n;m=_m;k=_k;
for(int i=0;i<n;i++){
int le=min(_r[i],_c[i]),ri=max(_r[i],_c[i]);
p[i]=i;_r[i]=le;_c[i]=ri;
}
sort(p,p+n,[&](int a,int b){return (_r[a]!=_r[b]?_r[a]<_r[b]:_c[a]>_c[b]);});
int tmp=0,mr=-1;
for(int i=0;i<n;i++)
if(_c[p[i]]>mr){
l[++tmp]=_r[p[i]];
r[tmp]=_c[p[i]];
mr=_c[p[i]];
}
n=tmp;
return solve();
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |