제출 #566800

#제출 시각아이디문제언어결과실행 시간메모리
566800Hanksburger전선 연결 (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...