結果
問題 |
No.1767 BLUE to RED
|
ユーザー |
👑 |
提出日時 | 2023-06-20 13:59:43 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 206 ms / 2,000 ms |
コード長 | 881 bytes |
コンパイル時間 | 699 ms |
コンパイル使用メモリ | 81,240 KB |
最終ジャッジ日時 | 2025-02-14 23:22:45 |
ジャッジサーバーID (参考情報) |
judge6 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(){ int n,m;cin>>n>>m; vector<long long> A(n),B(m); for(int i = 0; n > i; i++)cin>>A[i]; for(int i = 0; m > i; i++)cin>>B[i]; sort(A.begin(), A.end()); sort(B.begin(), B.end()); A.push_back(100000000001LL); vector<long long> C[A.size()]; int nw = 0; for(int i = 0; m > i; i++){ while(B[i]>A[nw]){ nw++; } C[nw].push_back(B[i]); } long long ans = 0; for(int i = 0; n >= i; i++){ if(C[i].size() == 0)continue; if(!i){ ans += A[i]-C[i][0]; }else if(i == n){ ans += C[i][C[i].size()-1]-A[i-1]; }else{ long long mx = max(C[i][0]-A[i-1], A[i]-C[i][C[i].size()-1]); for(int j = 1; C[i].size() > j; j++){ mx = max(mx,C[i][j]-C[i][j-1]); } ans += A[i]-A[i-1]-mx; } } cout << ans << endl; }