#include "nile.h"
#include "bits/stdc++.h"
using namespace std;
struct Artefacto{
long long Peso, a, b;
};
bool operator<(const Artefacto& a, const Artefacto& b){
return a.a - a.b > b.a - b.b;
}
vector<Artefacto> Per__es_clave;
vector< pair<long long, long long> > _rbol;
vector<long long> Jaja;
void Crear(long long i, long long d, long long p){
if(i == d){
Jaja[i] = p;
_rbol[p] = {Per__es_clave[i].b - Per__es_clave[i].a, i};
return;
}
long long P = (i + d) / 2;
Crear(i, P, p * 2);
Crear(P + 1, d, p * 2 + 1);
if(_rbol[p * 2].first > _rbol[p * 2 + 1].first) _rbol[p] = _rbol[p * 2];
else if(_rbol[p * 2].first < _rbol[p * 2 + 1].first) _rbol[p] = _rbol[p * 2 + 1];
else {
if(_rbol[p * 2].second < _rbol[p * 2 + 1].second) _rbol[p] = _rbol[p * 2];
else _rbol[p] = _rbol[p * 2 + 1];
}
}
pair<long long, long long> Consulta(long long i, long long d, long long p, long long I, long long D){
if(D < I) return {-2, -2};
if(i >= I and d <= D) return _rbol[p];
if(i > D or d < I) return {-2, -2};
long long P = (i + d) / 2;
auto _1 = Consulta(i, P, p * 2, I, D), _2 = Consulta(P + 1, d, p * 2 + 1, I, D);
if(_1.first < _2.first) return _1;
else if(_1.first > _2.first) return _2;
else {
if(_1.second < _2.second) return _1;
else return _2;
}
}
void Actualizar(long long p, long long o){
if(p == -0) return;
if(p == o) _rbol[p].first = -2;
else {
if(_rbol[p * 2].first > _rbol[p * 2 + 1].first) _rbol[p] = _rbol[p * 2];
else if(_rbol[p * 2].first < _rbol[p * 2 + 1].first) _rbol[p] = _rbol[p * 2 + 1];
else {
if(_rbol[p * 2].second < _rbol[p * 2 + 1].second) _rbol[p] = _rbol[p * 2];
else _rbol[p] = _rbol[p * 2 + 1];
}
}
Actualizar(p / 2, o);
}
vector<long long> calculate_costs(vector<int> w, vector<int> a, vector<int> b, vector<int> e) {
int n = a.size(), q = e.size();
for(long long i = 0; i < n; i++){
Artefacto Nuevo;
Nuevo.Peso = w[i];
Nuevo.a = a[i];
Nuevo.b = b[i];
Per__es_clave.push_back(Nuevo);
}
sort(Per__es_clave.begin(), Per__es_clave.end());
long long r = 0;
for(long long i = 0; i < n; i++){
if(i + 1 == n) r += Per__es_clave[i].a;
else r += Per__es_clave[i].b + Per__es_clave[i + 1].b;
i++;
}
return vector<long long>(q, r);
/*_rbol.assign(n * 4 + 22, {});
Jaja.assign(n, 0);
for(long long i = 0; i < n; i++){
Artefacto Nuevo;
Nuevo.Peso = w[i];
Nuevo.a = a[i];
Nuevo.b = b[i];
Per__es_clave.push_back(Nuevo);
}
sort(Per__es_clave.begin(), Per__es_clave.end());
Crear(0, n - 1, 1);
vector<long long> Retorno;
while(q--){
long long r = 0;
vector<long long> Pareja(n, -2);
}
return Retorno;*/
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |