結果
| 問題 |
No.808 Kaiten Sushi?
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-03-22 23:47:36 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 826 bytes |
| コンパイル時間 | 1,327 ms |
| コンパイル使用メモリ | 167,004 KB |
| 実行使用メモリ | 10,988 KB |
| 最終ジャッジ日時 | 2024-09-19 07:07:42 |
| 合計ジャッジ時間 | 12,303 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 RE * 1 |
| other | RE * 56 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
i64 N,L;
cin >> N >> L;
vector<i64> x(N);
vector<i64> y(N);
for(int i = 0;i < N;i++) cin >> x[i];
for(int i = 0;i < N;i++) cin >> y[i];
vector<pair<i64,i64>> vec;
for(int i = 0;i < N;i++) vec.push_back({x[i], 1});
for(int i = 0;i < N;i++) vec.push_back({y[i], -1});
vector<i64> d(N + 1, 0);
sort(begin(vec), end(vec));
i64 MAX = 0;
i64 MI = 0;
i64 MIN = 0;
for(int i = 0;i < N * 2;i++) {
d[i + 1] = d[i] + vec[i].second;
if(MAX <= d[i + 1]) {
MAX = d[i + 1];
MI = i;
}
if(d[i + 1] <= MIN) {
MIN = d[i + 1];
}
}
i64 delta = MAX - MIN;
if(MAX == 0) {
cout << delta * L + y.front();
}
else {
cout << (delta - 1) * L + vec[MI + 1].first;
}
cout << endl;
}