Submission #1290479

#TimeUsernameProblemLanguageResultExecution timeMemory
1290479hackstarSoccer (JOI17_soccer)C++20
35 / 100
35 ms18560 KiB
// #pragma GCC optimize("Ofast,O3,unroll-loops") // #pragma GCC target("avx,avx2") #include<bits/stdc++.h> #include<random> using namespace std; #ifdef CM #include "debug.h" #else #define debug(...) 42 #endif #define pb emplace_back #define ALL(x) (x).begin(),(x).end() #define rALL(x) (x).rbegin(),(x).rend() #define srt(x) sort(ALL(x)) #define rev(x) reverse(ALL(x)) #define rsrt(x) sort(rALL(x)) #define sz(x) (int)(x.size()) #define aura 1e18 #define pii pair<int,int> void die(string S){puts(S.c_str());exit(0);} #define int long long const int mod=1e9+7; void solve() { int h,w; cin>>h>>w; int a,b,c; cin>>a>>b>>c; int n; cin>>n; vector<pii>A(n); for(auto &[x,y]:A) cin>>x>>y; // srt(A); vector<vector<pii>>g(n); auto get=[&](int x,int y)->int { int x1=A[x].first,y1=A[x].second; int x2=A[y].first,y2=A[y].second; int ans=+aura; ans=min(ans,c*(abs(x1-x2)+abs(y1-y2))); ans=min(ans,(a*abs(y1-y2)+b) + c*abs(x1-x2)); ans=min(ans,a*abs(x1-x2)+b + c*abs(y1-y2)); return ans; }; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(j==i) continue; int w=get(i,j); g[i].pb(j,w); } } vector<int>dp(n,+aura); priority_queue<pii,vector<pii>,greater<pii>>pq; pq.emplace(0,0); dp[0]=0; while(!pq.empty()) { auto [d,u]=pq.top(); pq.pop(); if(d>dp[u]) continue; for(auto [v,w]:g[u]) { if(dp[u]+w<dp[v]) { dp[v]=dp[u]+w; pq.emplace(dp[v],v); } } } cout<<dp[n-1]<<'\n'; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t=1; #ifdef CM freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #endif // cin>>t; while(t--) solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...