제출 #145673

#제출 시각아이디문제언어결과실행 시간메모리
145673TadijaSebezThe Kingdom of JOIOI (JOI17_joioi)C++11
100 / 100
2738 ms90632 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back const int N=2050; int n,m,a[N][N]; vector<pair<int,int>> ord; int ans=-1,mx=1,mn=1e9,now; bool was[N][N]; void Solve(vector<pair<int,int>> Move) { now=mx; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) was[i][j]=0; for(auto p:ord) { int x,y; tie(x,y)=p; int tmp=max(a[x][y]-mn,mx-now); if(ans==-1 || ans>tmp) ans=tmp; if(!was[x][y]) { queue<pair<int,int>> q; auto push=[&](int i, int j) { q.push({i,j}); was[i][j]=1; now=min(now,a[i][j]); }; push(x,y); while(q.size()) { tie(x,y)=q.front(); q.pop(); for(auto mv:Move) { int nx,ny; nx=x+mv.first; ny=y+mv.second; if(nx>=1 && nx<=n && ny>=1 && ny<=m && !was[nx][ny]) push(nx,ny); } } } } } int main() { scanf("%i %i",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%i",&a[i][j]),ord.pb({i,j}),mx=max(mx,a[i][j]),mn=min(mn,a[i][j]); sort(ord.begin(),ord.end(),[&](pair<int,int> x, pair<int,int> y){ return a[x.first][x.second]>a[y.first][y.second];}); Solve({{-1,0},{0,-1}}); Solve({{-1,0},{0,1}}); Solve({{1,0},{0,-1}}); Solve({{1,0},{0,1}}); printf("%i\n",ans); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

joioi.cpp: In function 'int main()':
joioi.cpp:46:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %i",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~
joioi.cpp:47:99: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%i",&a[i][j]),ord.pb({i,j}),mx=max(mx,a[i][j]),mn=min(mn,a[i][j]);
                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...