#include<bits/stdc++.h>
#include "aliens.h"
#define ll long long
using namespace std;
const int maxn=510;
const int inf=1000*1000+10;
int dp[maxn][maxn][maxn], ma[maxn][maxn];
int soma_pref(int x){
return x*(x+1)/2;
}
int soma(int l, int r){
return soma_pref(r)-soma_pref(l-1);
}
ll take_photos(int n, int m, int k, vector<int> r, vector<int> c){
map<int,int>mp;
for(int i=0;i<n;i++){
r[i]++; c[i]++;
if(r[i]>c[i]) swap(r[i],c[i]);
mp[r[i]]=max(mp[r[i]],c[i]-r[i]+1);
}
vector<int>v, d;
v.push_back(0); d.push_back(0);
for(auto [a,b] : mp){
v.push_back(b); // o tamanho necessario do quadrado
d.push_back(a); // qual a posicao real dele
}
n=v.size()-1;
for(int i=1;i<=n;i++) ma[i][i]=v[i]+d[i]-1;
for(int l=2;l<=n;l++){
for(int i=1;i+l-1<=n;i++){
int j=i+l-1;
ma[i][j]=max(ma[i][j-1],ma[j][j]);
}
}
for(int i=0;i<=n;i++)
for(int j=0;j<=k;j++)
for(int l=0;l<=n;l++) dp[i][j][l]=inf;
dp[0][0][0]=0;
int resp=inf;
for(int i=1;i<=n;i++){
for(int j=1;j<=k;j++){
if(i==1) dp[1][1][1]=v[1]*v[1];
for(int l=1;l<i;l++){
int aux=ma[l][i-1], at=v[i]+d[i]-1; // quanto o quadrado ja ocupa
// cout << "? " << i << " " << aux << " " << at << endl;
if(at<=aux) dp[i][j][l]=dp[i-1][j][l];
else{
int cost=at-aux+2*soma(aux,at-1);
// cout << "+" << cost << endl;
dp[i][j][l]=dp[i-1][j][l]+cost;
}
int bonus=0;
if(d[i]<aux) bonus=(aux-d[i])*(aux-d[i]); // interseccao
dp[i][j][i]=min(dp[i][j][i],dp[i-1][j-1][l]+v[i]*v[i]-bonus);
if(i==n){
// cout << "! " << i << " " << j << ' ' << l << ' ' << dp[i][j][l] << endl;
resp=min(resp,dp[i][j][l]);
}
}
// cout << "! " << i << " " << j << ' ' << i << ' ' << dp[i][j][i] << endl;
if(i==n) resp=min(resp,dp[i][j][i]);
}
}
return resp;
}
컴파일 시 표준 에러 (stderr) 메시지
aliens.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
aliens_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~| # | 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... |