이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "aliens.h"
#include<algorithm>
#include<iostream>
#include<vector>
#include<stdio.h>
#include<queue>
using namespace std;
#define INF 1000000000000000000
typedef pair<long long int,long long int> pii;
typedef long long int lld;
vector<pair<long long int,long long int> >arr;
//long long int DP[50001][4001];
int p;
lld Cost[1000000];
lld sq(lld x){
return x*x;
}
lld sq2(lld x){
if(x>0)return x*x;
return 0;
}
void print(pair<lld,lld> a){
cout<<a.first<<" "<<a.second<<endl;
}
long long take_photos(int n, int m, int k, vector<int> r,vector<int> c) {
pair<long long int,long long int>points[n];
for(int i=0;i<n;i++){
points[i]=pair<long long int,long long int>(r[i],c[i]);
if(r[i]>c[i])swap(points[i].first,points[i].second);
}
for(int i=0;i<n;i++)points[i].second=-points[i].second;
sort(points,points+n);
for(int i=0;i<n;i++)points[i].second=-points[i].second;
long long int cnts=-1;
lld cntf=-1;
for(int i=0;i<n;i++){
if(points[i].second>cnts && points[i].first>cntf){
cnts=points[i].second;
cntf=points[i].first;
arr.push_back(points[i]);
//print(points[i]);
}
}
p=arr.size();
for(int i=0;i<p;i++){
if(i==0)Cost[i]=0;
else{
Cost[i]=sq2(-arr[i].first+arr[i-1].second+1);
}//cout<<Cost[i]<<endl;
}
lld DP[p+1][k+1];
for(int photo=0;photo<=k;photo++){
for(int i=0;i<=p;i++){
DP[i][photo]=INF;
}
}DP[0][0]=0;
for(int photo=1;photo<=k;photo++){
for(int i=0;i<=p;i++){
DP[i][photo]=min(DP[i][photo],DP[i][photo-1]);
for(int j=0;j<i;j++){
DP[i][photo]=min(DP[i][photo],DP[j][photo-1]-Cost[j]+sq(arr[i-1].second-arr[j].first+1));
}
}
}
/*for(int photo=0;photo<=k;photo++){
for(int i=0;i<=p;i++){
cout<<DP[i][photo]<<" ";
}cout<<endl;
}*/
return DP[p][k];
}
# | 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... |