Submission #946578

#TimeUsernameProblemLanguageResultExecution timeMemory
946578PagodePaivaMeetings (IOI18_meetings)C++17
19 / 100
3676 ms786436 KiB
#include "meetings.h"
#include<bits/stdc++.h>
#define ll long long
#define N 5010
#define inf 1e18

using namespace std;

ll pref[N][N];
ll suf[N][N];
ll v[N][N];

std::vector<long long> minimum_costs(std::vector<int> h, std::vector<int> l,
                                     std::vector<int> r) {
  int n = h.size();
  for(int i = 0;i < n;i++){
    v[i][i] = h[i];
    for(int j = i-1;j >= 0;j--) v[j][i] = max(v[j+1][i], (long long) h[j]);
    for(int j = i+1;j < n;j++) v[j][i] = max(v[j-1][i], (long long) h[j]);
  }
  for(int i = 0;i < n;i++){
    pref[i][i] = v[i][i];
    suf[i][i] = v[i][i];
    for(int j = i-1;j >= 0;j--) pref[j][i] = pref[j+1][i] + v[j][i];
    for(int j = i+1;j < n;j++) suf[j][i] = suf[j-1][i] + v[j][i];
  }
  vector <long long> resp;
  for(int i = 0;i < l.size();i++){
    int lt = l[i], rt = r[i];
    ll res = inf;
    for(int x = lt;x <= rt;x++){
      // cout << pref[lt][x] << ' ' << suf[rt][x] << ' ' << v[x][x] << endl;
      res = min(res, pref[lt][x] + suf[rt][x] - v[x][x]);
    }
    resp.push_back(res);
  }
  return resp;
}

Compilation message (stderr)

meetings.cpp: In function 'std::vector<long long int> minimum_costs(std::vector<int>, std::vector<int>, std::vector<int>)':
meetings.cpp:28:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |   for(int i = 0;i < l.size();i++){
      |                 ~~^~~~~~~~~~
#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...