結果
問題 | No.602 隠されていたゲーム2 |
ユーザー |
|
提出日時 | 2017-12-02 10:49:55 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 23 ms / 2,000 ms |
コード長 | 1,586 bytes |
コンパイル時間 | 2,821 ms |
コンパイル使用メモリ | 185,888 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-16 00:02:41 |
合計ジャッジ時間 | 3,867 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h>#include <ext/pb_ds/assoc_container.hpp>#include <ext/pb_ds/tree_policy.hpp>using namespace std;using namespace __gnu_pbds;#define fi first#define se second#define mp make_pair#define pb push_back#define fbo find_by_order#define ook order_of_keytypedef long long ll;typedef pair<ll,ll> ii;typedef vector<int> vi;typedef long double ld;typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> pbds;typedef set<ll>::iterator sit;typedef map<ll,ll>::iterator mit;ll mx[2];ll a[111111];int main(){ios_base::sync_with_stdio(0); cin.tie(0);int n; cin>>n;mx[0]=-ll(1e9); mx[1]=-ll(1e9);vi V[2];for(int i=0;i<n;i++){cin>>a[i];V[a[i]&1].pb(a[i]);mx[a[i]&1]=max(mx[a[i]&1],a[i]);}ll x,y; cin>>x>>y;ll D = abs(x)+abs(y);if(D==0){cout<<0<<'\n'; return 0;}for(int i=0;i<n;i++){if(a[i]==D){cout<<1<<'\n'; return 0;}}ll mxeven=max(mx[0]*2,mx[1]*2);if(D&1){sort(V[0].begin(),V[0].end());sort(V[1].begin(),V[1].end());for(int i=0;i<V[1].size();i++){int lb=lower_bound(V[0].begin(),V[0].end(),V[1][i])-V[0].begin();lb--;if(lb>=0){if(V[1][i]-V[0][lb]<=D&&D<=V[1][i]+V[0][lb]){cout<<2<<'\n'; return 0;}}}swap(V[0],V[1]);for(int i=0;i<V[1].size();i++){int lb=lower_bound(V[0].begin(),V[0].end(),V[1][i])-V[0].begin();lb--;if(lb>=0){if(V[1][i]-V[0][lb]<=D&&D<=V[1][i]+V[0][lb]){cout<<2<<'\n'; return 0;}}}cout<<-1<<'\n';}else{cout<<(D<=mxeven?2:-1)<<'\n';}}