Submission #1061018

#TimeUsernameProblemLanguageResultExecution timeMemory
1061018Faisal_SaqibWiring (IOI17_wiring)C++17
7 / 100
1089 ms72440 KiB
#include <vector> #include <bits/stdc++.h> using namespace std; #define ll long long const ll inf=1e16; long long min_total_length(std::vector<int> RR, std::vector<int> BB) { vector<ll> r,b; for(auto i:RR)r.push_back(i); for(auto i:BB)b.push_back(i); ll n=r.size(); ll m=b.size(); map<pair<ll,ll>,ll> dp; dp[{0,0}]=0; priority_queue<pair<ll,pair<int,int>>,vector<pair<ll,pair<int,int>>>,greater<pair<ll,pair<int,int>>>>pq; pq.push({0,{0,0}}); while(pq.size()>0) { auto it=pq.top(); pq.pop(); int i=it.second.first; int j=it.second.second; if(i==n and j==m)break; if(i==n or j==m)continue; // cout<<"At "<<i<<' '<<j<<' '<<dp[i][j]<<endl; ll nc=dp[{i,j}]+abs(r[i]-b[j]); if(dp.find({i+1,j+1})==dp.end() or nc<dp[{i+1,j+1}]) { dp[{i+1,j+1}]=nc; pq.push({nc,{i+1,j+1}}); } if(dp.find({i+1,j})==dp.end() or nc<dp[{i+1,j}]) { dp[{i+1,j}]=nc; pq.push({nc,{i+1,j}}); } if(dp.find({i,j+1})==dp.end() or nc<dp[{i,j+1}]) { dp[{i,j+1}]=nc; pq.push({nc,{i,j+1}}); } } return dp[{n,m}]; }
#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...