Submission #1245460

#TimeUsernameProblemLanguageResultExecution timeMemory
1245460CyberCowNile (IOI24_nile)C++20
17 / 100
23 ms4292 KiB
#include "nile.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

ll dp[2005];

vector<long long> calculate_costs(vector<int> W, vector<int> A,
                                      vector<int> B, vector<int> E) {
  int Q = (int)E.size();
  vector<long long> R;
  vector<pair<int, pair<int, int>>> qaq;
  for (int i = 0; i < A.size(); i++)
  {
    qaq.push_back({W[i], {A[i], B[i]}});
  }
  sort(qaq.begin(), qaq.end());
  for (int i = 0; i < A.size(); i++)
  {
    W[i] = qaq[i].first;
    A[i] = qaq[i].second.first;
    B[i] = qaq[i].second.second;
  }
  for(auto g: E)
  {
    for (int i = 0; i < A.size(); i++)
    {
      dp[i] = 0;
    }
    dp[0] = A[0];
    for (int i = 1; i < A.size(); i++)
    {
      dp[i] = dp[i - 1] + A[i];
      int mi = 1e9;
      ll ggg = 0;
      ggg += B[i];
      for (int j = i - 1; j >= 0; j--)
      {
        if(W[i] - W[j] > g)continue;
        ggg += B[j];
        ll taz = 0;
        if(j)
        taz = dp[j - 1];
        if((i - j) % 2)
        {
          dp[i] = min(dp[i], taz + ggg);
        }
        else
          dp[i] = min(dp[i], taz + ggg + mi);
        mi = min(mi, A[j] - B[j]);
      }
    }
    R.push_back(dp[A.size() - 1]);
  }
  return R;
}
#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...