Submission #981266

#TimeUsernameProblemLanguageResultExecution timeMemory
981266Faisal_SaqibRoad Closures (APIO21_roads)C++17
5 / 100
40 ms3784 KiB
#include "roads.h"
#include <bits/stdc++.h>
//#include "grader.cpp"
#include <vector>
using namespace std;
#define ll long long
vector<ll> subtask1(int n,vector<int>&u,vector<int>&v,vector<int>&w)
{
  vector<ll> ans(n);
  sort(begin(w),end(w));
  ans[0]=0;
  for(int i=0;i<(n-1);i++)
    ans[0]+=w[i];
  for(int i=1;i<n;i++)
    ans[i]=ans[i-1]-w[n-i-1];  
  return ans;
}
vector<ll> subtask2(int n,vector<int>&u,vector<int>&v,vector<int>&w)
{
  vector<long long> ans(n);
  vector<ll> f(n+2);
  f[0]=f[1]=0;
  for(int i=2;i<(n);i++)
    f[i]=min(((ll)w[i-1])+f[i-1],((ll)w[i-2])+f[i-2]);
  for(int i=0;i<(n-1);i++)
    ans[0]+=((ll)w[i]);
  ans[1]=f[n-1];
  return ans;
}
vector<long long> minimum_closure_costs(int n, std::vector<int> u,std::vector<int> v,std::vector<int> w) {
  bool subtask11=1,subtask22=1;
  for(int i=0;i<n;i++)
  {
    subtask11&=(u[i]==0);
    subtask22&=(u[i]==i and v[i]==(i+1));
  }
  if(subtask11)
  {
    return subtask1(n,u,v,w);
  }
  else if(subtask22){
    return subtask2(n,u,v,w);
  }
  else{
    return vector<ll>(n,0);
  }
}
#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...