#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()
#define fr first
#define se second
#define pb push_back
#define mp make_pair
using namespace std;
const int MAXN=1e5+1;
double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
vector<double>dist(N,0);
ll i, j;
double act;
for(i=0; i<M; i++)
dist[min(x[i],y[i])]=c[i];
vector<double>dis(K+1,0);
for(i=0; i<H; i++)
{
vector<double>nd=dis;
if(arr[i]==0)
{
for(j=0; j<=K; j++)
nd[j]=0;
}
else if(arr[i]==2)
{
for(j=0; j<K; j++)
nd[j+1]=min(dis[j]/double(2),nd[j+1]);
if(i>0)
{
double act=dis[0];
for(j=1; j<=K; j++)
{
for(ll l=0; l<K; l++)
{
if(l+j>K)
break;
act=(dis[l]+dist[i-1]*j)/(2*j);
nd[l+j]=min(nd[j+l],act);
}
}
}
if(i+1<H)
{
double act=dis[0];
for(j=1; j<=K; j++)
{
for(ll l=0; l<K; l++)
{
if(l+j>K)
break;
act=(dis[l]+dist[i]*j)/(2*j);
nd[l+j]=min(nd[j+l],act);
}
}
}
}
for(j=0; j<=K; j++)
nd[j]=nd[j]+dist[i];
dis=nd;
}
double mi=dis[0];
for(j=1; j<=K; j++)
mi=min(mi,dis[j]);
return mi;
}
# | 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... |
# | 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... |