Submission #286018

#TimeUsernameProblemLanguageResultExecution timeMemory
286018YJUThe Kingdom of JOIOI (JOI17_joioi)C++14
0 / 100
1 ms384 KiB
#include<bits/stdc++.h> #pragma GCC optimize("unroll-loops,no-stack-protector") using namespace std; typedef int ll; typedef long double ld; typedef pair<ll,ll> pll; const ll MOD=1e9+7; const ll MOD2=998244353; const ll N=2e3+5; const ld pi=3.14159265359; const ll INF=(1LL<<31); #define SQ(i) ((i)*(i)) #define REP(i,n) for(ll i=0;i<n;i++) #define REP1(i,n) for(ll i=1;i<=n;i++) #define pb push_back #define mp make_pair #define X first #define Y second #define setp setprecision #define lwb lower_bound #define SZ(_a) (ll)_a.size() priority_queue<pair<ll,pll> > pq; ll n,m,u[N][N],vis[N][N],dg[N][N],x,y; ll dx[4]={-1,0,1,0},dy[4]={0,1,0,-1}; long long ans; bool BFS(ll sx,ll sy,ll ty,ll D,ll k){ REP(i,n+2)REP(j,m+2){ dg[i][j]=(i==sx?1:0)+(j==sy?1:0); vis[i][j]=0; } ll mn=u[sx][sy],mx=u[sx][sy]; pq.push(mp(mx,mp(sx,sy))); while(SZ(pq)){ auto tmp=pq.top();pq.pop(); if(max(mx,tmp.X)-min(mn,tmp.X)>k)continue; x=tmp.Y.X;y=tmp.Y.Y; vis[x][y]=1;mn=min(mn,tmp.X);mx=max(mx,tmp.X); REP(i,4)if((1LL<<i)&D){ ll nx=x+dx[i],ny=y+dy[i]; ++dg[nx][ny]; if(dg[nx][ny]==2){ pq.push(mp(u[nx][ny],mp(nx,ny))); } } } mn=INF;mx=-INF; REP1(i,n)REP1(j,m){ if(!vis[i][j])mn=min(mn,u[i][j]),mx=max(mx,u[i][j]); } return (mx-mn>k?0:1); } bool ok(ll k){ if(BFS(1,1,0,6,k)||BFS(1,m,0,12,k)||BFS(n,1,0,3,k)||BFS(n,m,0,9,k))return 1; return 0; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>m; REP1(i,n)REP1(j,m)cin>>u[i][j]; for(int i=30;i>=0;i--){ if(!ok(ans+(1LL<<i)))ans+=(1LL<<i); } cout<<ans+1<<"\n"; return 0; }

Compilation message (stderr)

joioi.cpp: In function 'bool BFS(ll, ll, ll, ll, ll)':
joioi.cpp:49:12: warning: integer overflow in expression of type 'int' results in '-2147483648' [-Woverflow]
   49 |  mn=INF;mx=-INF;
      |            ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...