Pagini recente » Cod sursa (job #3211365) | Profil Tibixb | Cod sursa (job #2782206) | Diferente pentru problema/razbunare intre reviziile 2 si 3 | Cod sursa (job #3332878)
#include <bits/stdc++.h>
#define MAXN 1000
using namespace std;
ifstream fin("struti.in");
ofstream fin("struti.out");
int mat[MAXN + 1][MAXN + 1], min_lin[MAXN + 1][MAXN + 1], min_col[MAXN + 1][MAXN + 1], max_lin[MAXN + 1][MAXN + 1], max_col[MAXN + 1][MAXN + 1];
int main()
{
int n, m, p, i, j, dim_lin, dim_col;
deque <int> dq_min, dq_max;
fin >> n >> m >> p;
for(i = 1; i <= n; i++){
for(j = 1; j <= m; j++){
fin >> mat[i][j];
}
}
while(p--){
fin >> dim_lin >> dim_col;
for(i = 1; i <= n; i++){
for(j = 1; j <= m; j++){
if(!dq_min.empty() && dq_min.front() == j - dim_col){
dq_min.pop_front();
}
while(!dq_min.empty() && mat[i][dq_min.back()] >= mat[i][j]){
dq_min.pop_back;
}
dq_min.push_back(j);
min_lin[i][j] = mat[i][dq_min.front()];
if(!dq_max.empty() && dq_max.front() == j - dim_col){
dq_max.pop_front();
}
while(!dq_max.empty() && mat[i][dq_max.back()] <= mat[i][j]){
dq_max.pop_back();
}
dq_max.push_back(j);
max_lin[i][j] = mat[i][dq_max.front()];
}
}
while(!dq_min.empty()){
dq_min.pop_back();
}
while(!dq_max.empty()){
dq_max.pop_back();
}
for(j = 1; j <= m; j++){
for(i = 1; i <= n; i++){
if(!dq_min.empty() && dq_min.front() == i - dim_lin){
dq_min.pop_front();
}
while(!dq_min.empty() && mat[dq_min.back()][j] >= mat[i][j]){
dq_min.pop_back;
}
dq_min.push_back(i);
}
}
}
return 0;
}