Submission #1223246

#TimeUsernameProblemLanguageResultExecution timeMemory
1223246Gabriel나일강 (IOI24_nile)C++20
19 / 100
35 ms18360 KiB
#include "nile.h"
#include "bits/stdc++.h"
using namespace std;
struct Artefacto{
  long long Peso, a, b;
};
bool F_cil = 1, Segundo = 1;
bool operator<(const Artefacto& a, const Artefacto& b){
  if(F_cil) return a.a - a.b > b.a - b.b;
  if(Segundo) return a.Peso < b.Peso;
}
vector<Artefacto> Per__es_clave;
vector< vector<long long> > PD;
long long Resolver(long long i, long long Saltado){
  if(i == Per__es_clave.size()){
    if(Saltado == 1) return 0;
    else return 2222222222222222;
  }
  if(i == Per__es_clave.size() - 1) return Per__es_clave[i].a;
  if(PD[i][Saltado] != -2) return PD[i][Saltado];
  return PD[i][Saltado] = min(Resolver(i + 2, Saltado) + Per__es_clave[i].b + Per__es_clave[i + 1].b, Resolver(i + 1, 1) + Per__es_clave[i].a);
}
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];
    if(w[i] != 1) F_cil = 0;
    if(w[i] != i + 1) Segundo = 0;
    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;
  if(F_cil){
    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);
  }
  if(Segundo){
    long long Menor = 2222222222222222;
    for(long long i = 0; i < n; i++){
      Menor = min(Per__es_clave[i].a - Per__es_clave[i].b, Menor);
      r += Per__es_clave[i].b;
    }
    PD.assign(n, vector<long long>(2, -2));
    if(n % 2 == 0) return vector<long long>(q, r);
    else {
      vector<long long> Retorno;
      for(long long i = 0; i < q; i++){
        long long v = e[i];
        //cerr<<v<<"\n";
        if(v >= 2) Retorno.push_back(r + Menor);
        else Retorno.push_back(Resolver(0, 0));
      }
      return Retorno;
    }
  }
}

Compilation message (stderr)

nile.cpp: In function 'bool operator<(const Artefacto&, const Artefacto&)':
nile.cpp:11:1: warning: control reaches end of non-void function [-Wreturn-type]
   11 | }
      | ^
nile.cpp: In function 'std::vector<long long int> calculate_costs(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
nile.cpp:63:1: warning: control reaches end of non-void function [-Wreturn-type]
   63 | }
      | ^
#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...