結果
問題 | No.808 Kaiten Sushi? |
ユーザー |
|
提出日時 | 2019-03-22 23:48:12 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 105 ms / 2,000 ms |
コード長 | 830 bytes |
コンパイル時間 | 1,496 ms |
コンパイル使用メモリ | 166,752 KB |
実行使用メモリ | 9,584 KB |
最終ジャッジ日時 | 2024-09-19 07:08:02 |
合計ジャッジ時間 | 4,853 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 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 * 2 + 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; }