Submission #1223241

#TimeUsernameProblemLanguageResultExecution timeMemory
1223241GabrielNile (IOI24_nile)C++20
6 / 100
26 ms6276 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...