This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
# include "aliens.h"
#include <bits/stdc++.h>
#define pll pair<ll,ll>
#define L first
#define R second
#define M make_pair
#define sz(x) (int)x.size()
using namespace std;
typedef long long ll;
typedef std::vector<int> V;
vector<pll> seg,Seg;
ll oo=1e18,cur;
vector<vector<ll> > f;
ll sqr(ll x) { if (x>=0ll) return x*x; else return 0ll; }
bool cmp(pll x,pll y){
if (x.L==y.L)
return x.R>y.R;
else return x.L<y.L;
}
void Calc(int j,int li,int ri,int l,int r){
if (li>ri) return;
int i=(li+ri)>>1,opt;
for (int I=l;I<=r;I++)
if (f[I][j-1]!=oo){
cur=f[I][j-1]+sqr(Seg[i].R-Seg[I+1].L+1ll)-sqr(Seg[I].R-Seg[I+1].L+1ll);
if (f[i][j]>cur){
f[i][j]=cur; opt=I;
}
}
Calc(j,li,i-1,l,opt);
Calc(j,i+1,ri,opt,r);
}
long long take_photos (int n, int m, int k, V r, V c) {
m+=m; seg.clear(); Seg.clear();
for (int i=0;i<n;i++) seg.push_back(M(min(r[i],c[i]),max(r[i],c[i])));
seg.push_back(M(-1,-1));
sort(seg.begin(),seg.end(),cmp);
Seg.push_back(seg[0]);
for (int i=1;i<sz(seg);i++)
if (Seg.back().R<seg[i].R)
Seg.push_back(seg[i]);
n=sz(Seg)-1; f.clear(); f.resize(n+1);
for (int i=0;i<=n;i++){
f[i].resize(k+1);
for (int j=0;j<=k;j++) f[i][j]=oo;
}
for (int j=0;j<=k;j++) f[0][j]=0ll;
for (int j=1;j<=k;j++) Calc(j,1,n,0,n-1);
return f[n][k];
}
Compilation message (stderr)
aliens.cpp: In function 'void Calc(int, int, int, int, int)':
aliens.cpp:33:9: warning: 'opt' may be used uninitialized in this function [-Wmaybe-uninitialized]
Calc(j,li,i-1,l,opt);
~~~~^~~~~~~~~~~~~~~~
# | 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... |