Submission #1270044

#TimeUsernameProblemLanguageResultExecution timeMemory
1270044FaggiCyberland (APIO23_cyberland)C++20
0 / 100
3095 ms12360 KiB
#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<ll> pot(31, 0); pot[0] = 1; for (i = 1; i < 31; i++) pot[i] = pot[i - 1] * 2; 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 (ll l = 0; l < K; l++) { act=dis[l]; for (j = 1; j <= K; j++) { if (l + j > K) break; act=act/2; nd[l + j] = min(nd[j + l], act); act=act+dist[i-1]*2; } } } if (i + 1 < H) { double act = dis[0]; for (ll l = 0; l < K; l++) { act=dis[l]; for (j = 1; j <= K; j++) { if (l + j > K) break; act=act/2; nd[l + j] = min(nd[j + l], act); act=act+dist[i]*2; } } } } 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 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...