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<iostream>
#include<algorithm>
#include<vector>
#include"aliens.h"
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
#define chmin(a,b) a=min(a,b)
#define chmax(a,b) a=max(a,b)
#define N 510
vector<ll> l,r;
ll take_photos(int n,int m,int K,vector<int> R,vector<int> C){
vector<P> v;
for(int i=0;i<n;i++){
if(R[i]>C[i])swap(R[i],C[i]);
v.push_back(make_pair((ll)R[i],(ll)C[i]));
}
sort(v.begin(),v.end());
ll rnd=-1;
r.push_back(-1);
for(auto p:v){
ll x=p.first,y=p.second+1;
if(y<=rnd)continue;
rnd=y;
l.push_back(x);
r.push_back(y);
}
n=l.size();
if(n==1)return (r[1]-l[0])*(r[1]-l[0]);
ll dp[N][N];
for(int i=0;i<N;i++)for(int j=0;j<N;j++)dp[i][j]=1e17;
dp[0][0]=l[0]*l[0]+r[n]*r[n];
for(int k=1;k<=K;k++)for(int i=1;i<=n;i++){
ll tei=r[i]*r[i]+l[i]*l[i];
if(i<n)tei-=max(0LL,r[n]-l[n])*max(0LL,r[n]-l[n]);
for(int j=0;j<i;j++){
chmin(dp[i][k],tei+dp[j][k-1]-2*r[i]*l[j]);
}
//cout<<i<<" "<<k<<" "<<dp[i][k]<<endl;
}
ll ans=1e17;
for(int j=0;j<=K;j++)chmin(ans,dp[n][j]);
return ans;
}
# | 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... |