結果
問題 | No.1965 Heavier |
ユーザー |
|
提出日時 | 2022-06-05 22:40:29 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 72 ms / 2,000 ms |
コード長 | 2,155 bytes |
コンパイル時間 | 1,617 ms |
コンパイル使用メモリ | 141,096 KB |
最終ジャッジ日時 | 2025-01-29 18:38:23 |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
#pragma GCC optimize("Ofast")#include <iostream>#include <vector>#include <algorithm>#include <map>#include <queue>#include <cstdio>#include <ctime>#include <assert.h>#include <chrono>#include <random>#include <numeric>#include <set>#include <deque>#include <stack>#include <sstream>#include <utility>#include <cstring>#include <unordered_map>#include <unordered_set>#include <tuple>#include <array>#include <bitset>using namespace std;typedef long long int ll;typedef unsigned long long ull;mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());ll myRand(ll B) {return (ull)rng() % B;}inline double time() {return static_cast<long double>(chrono::duration_cast<chrono::nanoseconds>(chrono::steady_clock::now().time_since_epoch()).count()) * 1e-9;}int main(){cin.tie(nullptr);ios::sync_with_stdio(false);int n; cin >> n;vector<int> a(n),b(n);for(int i=0;i<n;i++){cin >> a[i];}for(int i=0;i<n;i++){cin >> b[i];}deque<pair<int,int>> dq1,dq2;ll res = -n;int r = 0;for(int l=0;l<n;l++){while(dq1.size() and dq1.front().second < l){dq1.pop_front();}while(dq2.size() and dq2.front().second < l){dq2.pop_front();}while(r < n){if(l == r){dq1.push_back({a[l]+b[l],l});dq2.push_back({a[l]-b[l],l});r++;}else{bool ok = true;if(dq1.size() and dq1.front().first >= a[r]+b[r]) ok = false;if(dq2.size() and dq2.front().first >= a[r]-b[r]) ok = false;if(!ok) break;while(dq1.size() and dq1.back().first <= a[r]+b[r]){dq1.pop_back();}dq1.push_back({a[r]+b[r],r});while(dq2.size() and dq2.back().first <= a[r]-b[r]){dq2.pop_back();}dq2.push_back({a[r]-b[r],r});r++;}}res += r-l;}cout << res << endl;}