Cod sursa(job #3332878)

Utilizator Belea_DariusBelea Mihai Darius Belea_Darius Data 9 ianuarie 2026 16:51:25
Problema Struti Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.86 kb
#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;
}