이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "aliens.h"
#include <bits/stdc++.h>
#define fi first
#define se second
#define ryan bear
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef long double ld;
typedef vector<int> vim;
typedef vector<ll> vlm;
int n, m;
pii im[100010]; vim chk(100010);
vector<pll> ar;
ll sq(ll i) {return i*i;}
pll stk[100010]; ll cnt[100010]; int fr, tp;
ll lin(ll i, ll x) { return stk[i].fi*x+stk[i].se;}
pll cal(ll x) {
while (fr<tp-1 && lin(fr, x)>=lin(fr+1, x)) fr++;
return {lin(fr, x), cnt[fr]};
}
void add(ll a, ll b, ll c) {
while (fr<tp-1 && (stk[tp-2].fi-a)*(stk[tp-1].se-stk[tp-2].se) >= (stk[tp-2].fi-stk[tp-1].fi)*(b-stk[tp-2].se)) tp--;
stk[tp++]={a, b};
cnt[tp++]=c;
}
pll f(ll cost) {
fr=tp=0;
vlm Dp(n+1), c(n+1);
add(-2*(ar[1].se-1), sq(ar[1].se-1)+cost, 1);
Dp[1]=cal(ar[1].fi).fi+sq(ar[1].fi);
c[1]=1;
pll pl;
for (int i=2; i<=n; i++) {
add(-2*(ar[i].se-1), sq(ar[i].se-1)-sq( max(0ll, (ar[i-1].fi-ar[i].se+1)) )+Dp[i-1]+cost, c[i-1]+1);
pl=cal(ar[i].fi);
Dp[i]=sq(ar[i].fi)+pl.fi, c[i]=pl.se;
}
return {c[n], Dp[n]-c[n]*cost};
}
ll take_photos(int n_, int m_, int k, vim r, vim c) { //(r-c+1)^2
n=n_; m=m_;
for (int i=0; i<n; i++) r[i]++, c[i]++;
for (int i=0; i<n; i++) {if (r[i]<c[i]) swap(r[i], c[i]);}
for (int i=0; i<n; i++) im[i]={r[i],c[i]};
sort(im, im+n, [](pii pi1, pii pi2){return pi1.fi==pi2.fi?pi1.se<pi2.se:pi1.fi>pi2.fi;});
int mn=m+1;
ar.push_back({0,0});
for (int i=0; i<n; i++) {
if (mn<=im[i].se) continue;
ar.push_back({(ll)im[i].fi, (ll)im[i].se});
mn=min(mn, im[i].se);
}
n=ar.size()-1;
sort(ar.begin(), ar.end());
ll s=-1, e=(m*m);
while (s+1<e) {
ll md=(s+e)/2;
(f(md).fi>(ll)k?s:e)=md;
}
return f(e).se;
}
# | 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... |