제출 #781115

#제출 시각아이디문제언어결과실행 시간메모리
781115OrazBWiring (IOI17_wiring)C++14
20 / 100
25 ms6340 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <functional>
using namespace __gnu_pbds;
using namespace std;
typedef tree<int, null_type, less<int>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_set;
//Dijkstra->set
//set.find_by_order(x) x-position value
//set.order_of_key(x) number of strictly less elements don't need *set.??
#define N 100005
#define wr cout << "Continue debugging\n";
#define all(x) (x).begin(), (x).end()
#define ll long long int
#define pii pair <int, int>
#define pb push_back
#define ff first
#define ss second

const ll inf = 1e18;
map <int,int> mp;

ll min_total_length(vector<int> r, vector<int> b){
	sort(all(r)); sort(all(b));
	if (r.back() <= b[0]){
		int pos = 0;
		ll ans = 0;
		if (r.size() > b.size()){
			pos = r.size()-b.size();
			for (int i = 0; i < pos; i++) ans += b[0]-r[i];
		}
		for (int i = 0; i < b.size(); i++){
			ans += b[i]-r[min(pos, (int)r.size()-1)];
			pos++;
		}
		return ans;
	}
	vector<vector<ll>> dp(205, vector<ll>(205, inf));
	ll sum = 0;
	for (int i = 0; i < b.size(); i++){
		sum += abs(r[0]-b[i]);
		dp[0][i] = sum;
	}
	sum = 0;
	for (int i = 0; i < r.size(); i++){
		sum += abs(r[i]-b[0]);
		dp[i][0] = sum;
	}
	for (int i = 1; i < r.size(); i++){
		for (int j = 1; j < b.size(); j++){
			ll sum = 0;
			for (int k = j; k >= 1; k--){
				sum += abs(r[i]-b[k]);
				dp[i][j] = min(dp[i][j], dp[i-1][k-1]+sum);
			}
			sum = 0;
			for (int k = i; k >= 1; k--){
				sum += abs(r[k]-b[j]);
				dp[i][j] = min(dp[i][j], dp[k-1][j-1]+sum);
			}
		}
	}
	return dp[r.size()-1][b.size()-1];
	// ll ans = 0;
	// int n = r.size(), m = b.size();
	// vector<int> vis(n+m+1, 0), cur(n+m+1, 0);
	// for (auto i : r) cur[i] = 1;
	// for (auto i : b) cur[i] = 2;
	// n += m;
	// for (int i = 1; i <= n; i++){
	// 	if (vis[i]) continue;
	// 	int k = 3-cur[i], prev = i, tr = 0;
	// 	vis[i] = 1;
	// 	for (int j = i+1; j <= n; j++){
	// 		if (cur[j] == k and !vis[j]){
	// 			ans += j-prev;
	// 			prev = j;
	// 			k = 3-cur[j];
	// 			vis[j] = tr = 1;
	// 		}
	// 	}
	// 	if (!tr){
	// 		int mn = 1e9+7;
	// 		for (int j = i-1; j >= 1; j++){
	// 			if (cur[j] != cur[i]){mn = min(mn, i-j);break;}
	// 		}
	// 		for (int j = i+1; j <= n; j++){
	// 			if (cur[j] != cur[i]){mn = min(mn, j-i);break;}
	// 		}
	// 		ans += mn;
	// 	}
	// }
	// return ans;
}

// int main ()
// {
// 	ios::sync_with_stdio(false);
// 	cin.tie(0);
// 	int n, m;
// 	cin >> n >> m;
// 	vector<int> r(n), b(m);
// 	for (int i = 0; i < n; i++) cin >> r[i];
// 	for (int i = 0; i < m; i++) cin >> b[i];
// 	cout << min_total_length(r, b);
// }	

컴파일 시 표준 에러 (stderr) 메시지

wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:34:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |   for (int i = 0; i < b.size(); i++){
      |                   ~~^~~~~~~~~~
wiring.cpp:42:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |  for (int i = 0; i < b.size(); i++){
      |                  ~~^~~~~~~~~~
wiring.cpp:47:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |  for (int i = 0; i < r.size(); i++){
      |                  ~~^~~~~~~~~~
wiring.cpp:51:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |  for (int i = 1; i < r.size(); i++){
      |                  ~~^~~~~~~~~~
wiring.cpp:52:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |   for (int j = 1; j < b.size(); j++){
      |                   ~~^~~~~~~~~~
#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...