Untitled
unknown
plain_text
3 years ago
2.3 kB
8
Indexable
#include <bits/stdc++.h>
using namespace std;
long long int n, m, l, c, v[105][105], ans, minnr;
queue <pair<int, int > > q;
int main()
{
ifstream fin("schior.in");
ofstream fout("schior.out");
fin>>n>>m;
fin>>l>>c;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
fin>>v[i][j];
}
}
minnr=v[l][c];
q.push({l, c});
if(l-1>=1 && v[l-1][c]<=minnr)
{
q.push({l-1, c});
}
if(c-1>=1 && v[l][c-1]<=minnr)
{
q.push({l, c-1});
}
if(l+1<=n && v[l+1][c]<=minnr)
{
q.push({l+1, c});
}
if(c+1<=m && v[l][c+1]<=minnr)
{
q.push({l, c+1});
}
if(l-1>=1 && c-1>=1 && v[l-1][c-1]<=minnr)
{
q.push({l-1, c-1});
}
if(l+1<=n && c+1<=m && v[l+1][c+1]<=minnr)
{
q.push({l+1, c+1});
}
if(l-1>=1 && c+1<=m && v[l-1][c+1]<=minnr)
{
q.push({l-1, c+1});
}
if(c-1>=1 && l+1<=n && v[l+1][c-1]<=minnr)
{
q.push({l+1, c-1});
}
while(!q.empty())
{
pair<int, int> p=q.front();
q.pop();
if(v[p.first][p.second]<=minnr)
{
minnr=v[p.first][p.second];
l=p.first;
c=p.second;
if(l-1>=1 && v[l-1][c]<=minnr)
{
q.push({l-1, c});
}
if(c-1>=1 && v[l][c-1]<=minnr)
{
q.push({l, c-1});
}
if(l+1<=n && v[l+1][c]<=minnr)
{
q.push({l+1, c});
}
if(c+1<=m && v[l][c+1]<=minnr)
{
q.push({l, c+1});
}
if(l-1>=1 && c-1>=1 && v[l-1][c-1]<=minnr)
{
q.push({l-1, c-1});
}
if(l+1<=n && c+1<=m && v[l+1][c+1]<=minnr)
{
q.push({l+1, c+1});
}
if(l-1>=1 && c+1<=m && v[l-1][c+1]<=minnr)
{
q.push({l-1, c+1});
}
if(c-1>=1 && l+1<=n && v[l+1][c-1]<=minnr)
{
q.push({l+1, c-1});
}
}
}
fout<<minnr;
return 0;
}Editor is loading...