Cod sursa(job #1599292)

Utilizator alexmisto342Turdean Alexandru alexmisto342 Data 13 februarie 2016 19:09:56
Problema Oite Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <fstream>
#include <iostream>
#include <queue>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("luna.in");
ofstream fout("luna.out");
int i,j,n,m,a,b,k,x,lx,ly,c,mini;
int v[55][55],ff[5005];
int parcele[2551][51];
queue <pair<int,int> > q;
int main()
{
    fin>>n>>m;
    for(i = 1; i <= n; i++)
        for(j = 1; j <= m; j++)
            fin>>v[i][j];
    for(i = 1; i <= n; i++)
        for(j = 1; j <= m; j++)
        {
            if(v[i][j] == 0)
                continue;
            mini = 1000;
            c = v[i][j];
            ff[c]++;
            for(a = 0; a + i <= n && v[i + a][j] == c; a++)
            {
                for(b = 0; b + j <= m && v[i + a][j + b] == c; b++) v[i + a][j + b] = 0;
                mini = min(mini, b);
                a++;
                parcele[v[i][j]][max(mini,a)] = max(min(mini,a), parcele[v[i][j]][max(mini,a)]) ;
                a--;
            }
        }
    fin >> k;
    for(i = 1; i <= k; i++)
    {
        fin >> a >> b >> c;
        if(b < c)
            swap(b,c);
        if(!ff[a])
        {
            fout<<"Tara de provenienta nu are parcele pe Luna!\n";
        }
        else
        {
            if( b <=50 && parcele[a][b] >= c)
                fout<<"Cererea poate fi satisfacuta!\n";
            else
                fout<<"Cererea nu poate fi satisfacuta!\n";
        }
    }
    return 0;
}