제출 #1274617

#제출 시각아이디문제언어결과실행 시간메모리
1274617kl0989e전선 연결 (IOI17_wiring)C++20
0 / 100
1 ms424 KiB
#include "wiring.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pi pair<int, int> #define pl pair<ll, ll> #define vi vector<int> #define vl vector<ll> #define fi first #define se second #define pb push_back #define all(x) (x).begin(),(x).end() ll min_total_length(vi r, vi b) { vector<pl> k; for (int i=0; i<r.size(); i++) { k.pb({r[i],0}); } for (int i=0; i<b.size(); i++) { k.pb({b[i],1}); } sort(all(k)); int n=k.size(); vector<vector<vl>> dp(n,vector<vl>(min(n+1,11),vl({(ll)1e15,(ll)1e15}))); for (int i=1; i<=n; i++) { dp[0][i][k[0].se]=0; } for (int i=1; i<n; i++) { for (int j=0; j<=min(n,10); j++) { for (int j2=0; j2<=min(n,10); j2++) { if (j<j2) { dp[i][j2][k[i].se]=min(dp[i][j2][k[i].se],min(dp[i-1][j][0],dp[i-1][j][1])+j*(k[i].fi-k[i-1].fi)); } if (j>j2) { dp[i][j2][k[i].se]=min(dp[i][j2][k[i].se],dp[i-1][j][1-k[i].se]+j*(k[i].fi-k[i-1].fi)); dp[i][j2][1-k[i].se]=min(dp[i][j2][1-k[i].se],dp[i-1][j][1-k[i].se]+j*(k[i].fi-k[i-1].fi)); } if (j==j2 && j!=0) { dp[i][j2][k[i].se]=min(dp[i][j2][k[i].se],dp[i-1][j][1-k[i].se]+j*(k[i].fi-k[i-1].fi)); } } } } return min(dp[n-1][0][0],dp[n-1][0][1]); }
#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...