#include "railroad.h"
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 1e18;
int n;
vector<int> s,t;
int brut()
{
vector<vector<int>> dp((1<<n),vector<int>(n,INF));
for(int i=0;i<n;i++)
dp[(1<<i)][i]=0;
for(int config=1;config<(1<<n);config++)
{
if(config == (config&(-config)))
continue;
for(int ult=0;ult<n;ult++)
{
if(!((1<<ult)&config))
continue;
for(int p=0;p<n;p++)
{
if(p==ult || !((1<<p)&config))
continue;
dp[config][ult] = min(dp[config][ult], dp[config-(1<<ult)][p] + max(0LL, t[p] - s[ult]));
}
}
}
int mnm=INF;
for(int i=0;i<n;i++)
mnm = min(mnm, dp[(1<<n)-1][i]);
return mnm;
}
int isvalid()
{
vector<pair<int,int>> v;
for(int i=0;i<n;i++)
v.push_back({t[i],s[i]});
sort(v.begin(),v.end());
reverse(v.begin(),v.end());
set<pair<int,int>> libere;
for(int i=0;i<n;i++)
libere.insert({v[i].second, i});
for(int i=1;i<n;i++)
{
auto it = libere.lower_bound({v[i].first, -1});
if(it!=libere.end() && (*it).second==i)
it++;
if(it==libere.end())
return 0;
libere.erase(it);
}
return 1;
}
long long plan_roller_coaster(std::vector<int32_t> cit_s, std::vector<int32_t> cit_t)
{
n = cit_s.size();
s.resize(n);
t.resize(n);
for(int i=0;i<n;i++)
{
s[i] = cit_s[i];
t[i] = cit_t[i];
}
if(n<=16 && 0) return brut();
if(isvalid()) return 0;
vector<pair<int,int>> v;
for(int i=0;i<n;i++)
v.push_back({t[i],s[i]});
sort(v.begin(),v.end());
reverse(v.begin(),v.end());
set<pair<int,int>> libere;
for(int i=0;i<n;i++)
libere.insert({v[i].second, i});
int sum=0,cnt=0;
for(int i=1;i<n;i++)
{
auto it = libere.lower_bound({v[i].first, -1});
if(it!=libere.end() && (*it).second==i)
it++;
if(it==libere.end())
{
sum += v[i].first;
cnt++;
}
else
libere.erase(it);
}
for(int i=0;i<cnt;i++)
{
sum -= (*prev(libere.end())).first;
libere.erase(prev(libere.end()));
}
return sum;
}
/*
4
1 7
4 3
5 8
6 6
output: 3
*/
Compilation message (stderr)
railroad.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |