using namespace std;
#include <bits/stdc++.h>
#define ll long long
#define vll vector<ll>
#define pll pair<ll,ll>
#define pi pair<ll,ll>
#define vi vector<int>
long long min_distance(std::vector<int> x, std::vector<int> h, std::vector<int> l, std::vector<int> r, std::vector<int> y, int s, int g) {
int n = x.size(), m = l.size();
map<pi,vector<pi>> fr;
/*multiset<pi> poi;
vector<vector<pi>> ins(2e5+2);
vector<vector<pi>> rem(2e5+2);
for(int i = 0; i < m; i++){
ins[l[i]].push_back({y[i],i});
rem[r[i]].push_back({y[i],i});
}
map<int,int> prev;
for(int i = 0; i < n; i++){
for(pi hei : ins[i])poi.insert(hei);
pi bel = {x[i],0};
auto it = poi.begin();
while(it!=poi.end() && (*it).first <= h[i]){
int cur = (*it).first;
pi p = {x[i],cur};
fr[p].push_back(bel);
fr[bel].push_back(p);
if(l[(*it).second]!=i){
fr[p].push_back({prev[cur],cur});
fr[{prev[cur],cur}].push_back(p);
}
prev[cur]=x[i];
bel = p;
it++;
}
for(pi hei : rem[i])poi.erase(poi.find(hei));
}*/
map<pi,ll> dp;
dp[{x[g],0}]=1e18;
dp[{x[s],0}]=0;
for(int i = 0; i < m; i++){
for(int j = l[i]; j <=r[i]; j++){
for(int k = l[i]; k <= r[i]; k++){
if(y[i] <= h[j] && y[i] <= h[k]){
fr[{x[j],y[i]}].push_back({x[k],y[i]});
dp[{x[j],y[i]}]=1e18;
}
}
}
}
for(auto[a,b] : dp){
for(auto [c,d] : dp){
if(c.first == a.first)fr[a].push_back(c);
}
}
set<pair<ll,pi>> se;
map<pi,bool> vis;
se.insert({0,{x[s],0}});
while(!se.empty()){
pair<ll,pi> p = *se.begin();
pi q = p.second;
se.erase(se.begin());
if(vis[q])continue;
vis[q]=1;
for(pi f : fr[q]){
if(vis[f])continue;
ll w = dp[q] + (abs(f.first-q.first)+abs(f.second-q.second));
se.insert({w,f});
dp[f] = min(dp[f],w);
}
}
if(dp[{x[g],0}]==0 || dp[{x[g],0}]>=1e16)return -1;
return dp[{x[g],0}];
}
Compilation message
walk.cpp: In function 'long long int min_distance(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, int, int)':
walk.cpp:51:13: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
51 | for(auto[a,b] : dp){
| ^
walk.cpp:52:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
52 | for(auto [c,d] : dp){
| ^
walk.cpp:9:6: warning: unused variable 'n' [-Wunused-variable]
9 | int n = x.size(), m = l.size();
| ^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
7 ms |
1116 KB |
Output is correct |
6 |
Correct |
5 ms |
860 KB |
Output is correct |
7 |
Correct |
5 ms |
948 KB |
Output is correct |
8 |
Correct |
4 ms |
884 KB |
Output is correct |
9 |
Correct |
1 ms |
348 KB |
Output is correct |
10 |
Correct |
12 ms |
1372 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
1 ms |
344 KB |
Output is correct |
13 |
Correct |
0 ms |
436 KB |
Output is correct |
14 |
Correct |
0 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
348 KB |
Output is correct |
16 |
Correct |
1 ms |
348 KB |
Output is correct |
17 |
Correct |
10 ms |
1700 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
344 KB |
Output is correct |
3 |
Execution timed out |
4099 ms |
226496 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
4080 ms |
18192 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
4080 ms |
18192 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
7 ms |
1116 KB |
Output is correct |
6 |
Correct |
5 ms |
860 KB |
Output is correct |
7 |
Correct |
5 ms |
948 KB |
Output is correct |
8 |
Correct |
4 ms |
884 KB |
Output is correct |
9 |
Correct |
1 ms |
348 KB |
Output is correct |
10 |
Correct |
12 ms |
1372 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
1 ms |
344 KB |
Output is correct |
13 |
Correct |
0 ms |
436 KB |
Output is correct |
14 |
Correct |
0 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
348 KB |
Output is correct |
16 |
Correct |
1 ms |
348 KB |
Output is correct |
17 |
Correct |
10 ms |
1700 KB |
Output is correct |
18 |
Correct |
0 ms |
344 KB |
Output is correct |
19 |
Correct |
1 ms |
344 KB |
Output is correct |
20 |
Execution timed out |
4099 ms |
226496 KB |
Time limit exceeded |
21 |
Halted |
0 ms |
0 KB |
- |