Cod sursa(job #2059792)

Utilizator dragostanTantaru Dragos Constantin dragostan Data 7 noiembrie 2017 16:51:25
Problema Struti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
#include <fstream>

using namespace std;
ifstream cin("struti.in");
ofstream cout("struti.out");
const int DIM = 1001;
int alp[DIM][DIM], d[DIM * DIM], mx[DIM][DIM], mn[DIM][DIM], n, m, p, dx[DIM], dm[DIM];
int dmx(int x);
int all(int x, int y, int& mini);
int main()
{
    int dx, dy;
    cin >> n >> m >> p;
    for(int i = 1; i <= n; ++i)
    {
        for(int j = 1; j <= m; ++j)
            cin >> alp[i][j];
    }
    for(int i = 1; i <= p; ++i)
    {
        cin >> dx >> dy;

        int mini = 9000, nrt = 0, mnou;
        dmx(dx);
        nrt += all(dx, dy, mini);
        if(dx != dy)
        {
            dmx(dy);
        }

    }
    return 0;
}


int all(int x, int y, int& mini)
{
    for(int i = 1; i <= n; ++i)
    {
        int st = 0, dr = -1;
        for(int j = 1; j <= m; ++j)
        {

        }
    }
    return 0;
}

int dmx(int x)
{
    ///FOLOSESC DEQUE PT MAXIM SI MINIM

    for(int j = 1; j <= m; ++j)
    {
        int st = 0, dr = -1, sti = 0, dri = -1;
        for(int i = 1; i <= n; ++i)
        {
            if(st <= dr && dx[st] == i - x )
                ++st;
            while(st <= dr && alp[i][j] >= alp[dx[dr]][j])
            {
                --dr;
            }
            dx[++dr] = i;
            if(i >= x)
                mx[i][j] = alp[dx[st]][j];
            ///URMEAZA PENTRU MINIM

            if(sti <= dri && dm[sti] == i - x)
                ++sti;
            while(sti <= dri && alp[i][j] <= alp[dm[dri]][j])
            {
                --dri;
            }
            dm[++dri] = i;
            if(i >= x)
                mx[i][j] = alp[dm[sti]][j];
        }
    }

}