#include "aliens.h"
#include "bits/stdc++.h"
using namespace std;
vector< vector< vector<long long> > > PD;
vector<long long> Posibles, Posici_n_de_la_capa, Costos;
int Algo, m;
long long Resolver(int Cubierto, int Restantes, int Capa){
if(Restantes < 0) return 2222222222222222;
if(Capa >= Algo) return 0;
if(Cubierto == -1){
long long Menor = 2222222222222222;
for(int i = 0; i < m; i++){
if(Posibles[i] >= Costos[Capa]){
Menor = min(Menor, Resolver(i, Restantes - 1, Capa + 1) + (Posibles[i] - Posici_n_de_la_capa[Capa] + 1) * (Posibles[i] - Posici_n_de_la_capa[Capa] + 1));
}
}
return Menor;
}
if(PD[Cubierto][Restantes][Capa] != -2) return PD[Cubierto][Restantes][Capa];
if(Posibles[Cubierto] >= Costos[Capa]) return PD[Cubierto][Restantes][Capa] = Resolver(Cubierto, Restantes, Capa + 1);
long long Menor = 2222222222222222;
int cc = Cubierto;
long long Resta = 0;
if(Posici_n_de_la_capa[Capa] <= Posibles[cc]){
Resta = Posibles[cc] - Posici_n_de_la_capa[Capa] + 1;
Resta *= Resta;
}
for(Cubierto++; Cubierto < m; Cubierto++){
if(Posibles[Cubierto] >= Costos[Capa]){
Menor = min(Menor, Resolver(Cubierto, Restantes - 1, Capa + 1) + (Posibles[Cubierto] - Posici_n_de_la_capa[Capa] + 1) * (Posibles[Cubierto] - Posici_n_de_la_capa[Capa] + 1) - Resta);
}
}
return PD[cc][Restantes][Capa] = Menor;
}
long long take_photos(int n, int M, int k, vector<int> r, vector<int> c){
set<int> Diferentes;
for(int i = 0; i < n; i++){
if(r[i] > c[i]) swap(r[i], c[i]);
Diferentes.insert(r[i]);
}
map<int, int> Posiciones;
Algo = Diferentes.size();
Posici_n_de_la_capa.assign(Algo, 0);
int Asignar = 0;
for(auto E: Diferentes){
Posiciones[E] = Asignar;
Posici_n_de_la_capa[Asignar] = E;
Asignar++;
}
Costos.assign(Algo, 0);
for(int i = 0; i < n; i++){
Costos[Posiciones[r[i]]] = max((long long)c[i], Costos[Posiciones[r[i]]]);
}
Diferentes.clear();
for(int i = 0; i < n; i++){
Diferentes.insert(c[i]);
}
for(auto E: Diferentes){
Posibles.push_back(E);
}
m = Diferentes.size();
PD.assign(Posibles.size(), vector< vector<long long> >(k + 1, vector<long long>(Algo, -2)));
return Resolver(-1, k, 0);
}
Compilation message (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... |