Submission #1333113

#TimeUsernameProblemLanguageResultExecution timeMemory
1333113activedeltorreMeetings (IOI18_meetings)C++20
19 / 100
400 ms234644 KiB
#include "meetings.h"
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <vector>

using namespace std;
long long v[5005];
long long dp[5005][5005];
long long maxim[5005][5005];
std::vector<long long> minimum_costs(std::vector<int> H, std::vector<int> L,
                                     std::vector<int> R) {
  int Q = L.size();
  int n=H.size();
  for(int i=1;i<=n;i++)
  {
    maxim[i][i]=i;
    v[i]=H[i-1];
    dp[i][i]=v[i];
  }
  for(int dist=2;dist<=n;dist++)
  {
    for(long long st=1;st+dist-1<=n;st++)
    {
        long long dr=st+dist-1;
        if(v[maxim[st][dr-1]]>=v[dr])
        {
            maxim[st][dr]=maxim[st][dr-1];
        }
        else
        {
            maxim[st][dr]=dr;
        }
        long long mij=maxim[st][dr];
        dp[st][dr]=min(dp[st][mij-1]+(dr-mij+1)*v[mij],dp[mij+1][dr]+(mij-st+1)*v[mij]);
    }
  }
  vector<long long >rez;
  for(int i=0;i<Q;i++)
  {
    rez.push_back(dp[L[i]+1][R[i]+1]);
  }
  return rez;
}
#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...