제출 #566800

#제출 시각아이디문제언어결과실행 시간메모리
566800HanksburgerWiring (IOI17_wiring)C++17
100 / 100
53 ms8512 KiB
#include "wiring.h"
#include <bits/stdc++.h>
using namespace std;
long long dp[200005], sum[200005];
pair<int, bool> a[200005];
long long min_total_length(vector<int> r, vector<int> b)
{
    for (int i=0; i<r.size(); i++)
        a[i+1]={r[i], 0};
    for (int i=0; i<b.size(); i++)
        a[r.size()+i+1]={b[i], 1};
    int n=r.size()+b.size(), pre=1;
    sort(a+1, a+n+1);
    a[0]={-1e9, !a[1].second};
    for (int i=1; i<=n; i++)
        sum[i]=sum[i-1]+a[i].first;
    for (int i=1; i<=n; i++)
        dp[i]=1e18;
    for (int i=1; i<=n; i++)
    {
        int ind=i;
        while (ind<n && a[i].second==a[ind+1].second)
            ind++;
        for (int j=pre; j<i; j++)
            dp[j]=min(dp[j], dp[j-1]+a[i].first-a[j].first);
        long long x=0, y=dp[i-1];
        for (int j=i; j<=ind; j++)
        {
            x+=a[j].first-a[i-1].first;
            int tmp=i*2-j-2;
            if (tmp+1>=pre)
                y=min(y, dp[tmp]+1LL*a[i-1].first*(i-tmp-1)-sum[i-1]+sum[tmp]);
            dp[j]=x+y;
        }
        pre=i;
        i=ind;
    }
	return dp[n];
}

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

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