# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
372649 | 2021-03-01T08:33:02 Z | Dymo | 산악 구조대 (JOI13_mountain) | C++14 | 0 ms | 0 KB |
#include<bits/stdc++.h> using namespace std; #include "grader.h" #define ll int #define pll pair<ll,ll> #define ff first #define ss second #define pb push_back #define endl "\n" const ll maxn =1e6+10; const ll mod=1e9+7; const ll base=3e18; ll a[maxn]; ll ask(ll x,ll y) { return Measure(x,y); } vector<pll> adj[maxn]; void rescure(ll R,ll C,ll RS,ll CS,ll X) { ll w=X; ll x=RS; ll y=CS; ll n=R; ll m=C; ll t=max(max(n-x+1,x),max(m-y+1,y))-1; for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { ll h=abs(x-i)+abs(y-j); adj[h].pb(make_pair(i,j)); } } ll l=0,h=t; while (l<=h) { ll mid=(l+h)/2; auto p=adj[mid].back(); ll docao=ask(p.ff,p.ss); if (docao>=X) l=mid+1; else h=mid-1; } for (auto to:adj[h]) { ll t=ask(to.ff,to.ss); if (t==x) { Pinpoint(to.ff,to.ss); } } h++; for (auto to:adj[h]) { ll t=ask(to.ff,to.ss); if (t==x) { Pinpoint(to.ff,to.ss); } } for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { adj[h].clear(); } } } /*int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); if (fopen("t.inp","r")) { freopen("test.inp","r",stdin); freopen("test.out","w",stdout); } }*/