Submission #1014798

#TimeUsernameProblemLanguageResultExecution timeMemory
1014798hotboy2703Wiring (IOI17_wiring)C++17
100 / 100
38 ms10008 KiB
#include <vector> #include<bits/stdc++.h> using namespace std; using ll = long long; #define pll pair <ll,ll> #define fi first #define se second #define MP make_pair #define sz(a) (ll((a).size())) #define BIT(mask,i) (((mask) >> (i))&1) #define MASK(i) (1LL << (i)) pll a[200100]; ll dist[200100]; ll sum[200100]; ll dp[200100]; const ll INF = 1e18; long long min_total_length(std::vector<int> r, std::vector<int> b){ ll n = sz(r)+sz(b); for (ll i = 1;i <= n;i ++){ if (i <= sz(r))a[i] = MP(r[i-1],0); else a[i] = MP(b[i-sz(r)-1],1); } sort(a+1,a+1+n); { ll last[2] = {-1,-1}; for (ll i = 1;i <= n;i ++){ sum[i] = a[i].fi + sum[i-1]; dist[i] = INF; if (last[1-a[i].se] != -1)dist[i] = a[i].fi - last[1-a[i].se]; last[a[i].se] = a[i].fi; } last[0] = last[1] = -1; for (ll i = n;i >= 1;i --){ if (last[1-a[i].se] != -1)dist[i] = min(dist[i],-a[i].fi + last[1-a[i].se]); last[a[i].se] = a[i].fi; } } dp[0] = 0; ll last = 0,cur = 0; for (ll i = 1;i <= n;i ++){ if (i==1||a[i].se!=a[i-1].se){ last=cur; cur=1; } else cur++; dp[i] = dp[i-1] + dist[i]; // if (i==6)cout<<cur.fi<<' '<<cur.se<<' '<<last.fi<<' '<<last.se<<endl; if (cur <= last){ dp[i] = min(dp[i],dp[i-cur*2] + sum[i] - sum[i-cur] - (sum[i-cur] - sum[i-cur-cur])); } } return dp[n]; }
#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...