Pagini recente » Cod sursa (job #1772882) | Cod sursa (job #1395462) | Cod sursa (job #2568551) | Cod sursa (job #874426) | Cod sursa (job #2570578)
#include <bits/stdc++.h>
#define FILE_NAME "struti"
#define fast ios_base :: sync_with_stdio(0); cin.tie(0);
#pragma GCC optimize("O3")
#define NMAX 1000 + 100
using namespace std;
ifstream f(FILE_NAME ".in");
ofstream g(FILE_NAME ".out");
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pi;
typedef pair<ll,ll> llp;
typedef pair<ld,ld> pct;
const ll inf = 1LL << 60;
const ll mod = 1e9 + 7;
const ld eps = 1e-9;
void add(ll &a , ll b)
{
a += b;
a %= mod;
}
void sub(ll &a, ll b)
{
a = (a - b + mod) % mod;
}
int n, m, t, v[NMAX][NMAX], vmin[NMAX][NMAX], vmax[NMAX][NMAX], p , q, dif, cate;
void solve(int p, int q)
{
deque <int> Qmi, Qmx;
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= m; ++j)
{
while(!Qmi.empty() && v[i][j] <= v[i][Qmi.back()]) Qmi.pop_back();
Qmi.push_back(j);
if(j - p == Qmi.front())
Qmi.pop_front();
if(j >= p)
vmin[i][j] = v[i][Qmi.front()];
while(!Qmx.empty() && v[i][j] >= v[i][Qmx.back()]) Qmx.pop_back();
Qmx.push_back(j);
if(j - p == Qmx.front())
Qmx.pop_front();
if(j >= p)
vmax[i][j] = v[i][Qmx.front()];
}
Qmi.clear();
Qmx.clear();
}
for(int j = p; j <= m; ++j)
{
for(int i = 1; i <= n; ++i)
{
while(!Qmi.empty() && vmin[i][j] <= vmin[Qmi.back()][j]) Qmi.pop_back();
Qmi.push_back(i);
if(i - q == Qmi.front())
Qmi.pop_front();
while(!Qmx.empty() && vmax[i][j] >= vmax[Qmx.back()][j]) Qmx.pop_back();
Qmx.push_back(i);
if(i - q == Qmx.front())
Qmx.pop_front();
if(i >= q)
{
if(vmax[Qmx.front()][j] - vmin[Qmi.front()][j] < dif)
{
dif = vmax[Qmx.front()][j] - vmin[Qmi.front()][j];
cate = 1;
}
else if(vmax[Qmx.front()][j] - vmin[Qmi.front()][j] == dif)
cate++;
}
}
Qmi.clear();
Qmx.clear();
}
}
int main()
{
f >> n >> m >> t;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
f >> v[i][j];
while(t--)
{
f >> p >> q;
dif = 1 << 30;
cate = 0;
solve(p,q);
if(p != q)
solve(q,p);
g << dif << ' ' << cate << '\n';
}
f.close();
g.close();
return 0;
}