Pagini recente » Cod sursa (job #2881417) | Cod sursa (job #2344837) | Cod sursa (job #401357) | Cod sursa (job #2313378) | Cod sursa (job #2415610)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("costi.in");
ofstream fout("luna.out");
int a[55][55], d[5005][105];
bool b[55][55], v[5005];
int ddd[8005][8005];
int main()
{
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
fin >> a[i][j];
v[a[i][j]] = 1;
}
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
if (b[i][j] == 0)
{
int ii = i, jj = j;
while (a[ii][j] == a[i][j])
ii--;
ii++;
while (a[i][jj] == a[i][j])
jj--;
jj++;
int jmic = 100000, q = ii, p = jj;
while (a[q][jj] == a[i][j])
{
p = jj;
while (a[q][p] == a[i][j])
p++;
p--;
if (p < jmic)
jmic = p;
q++;
}
q--;
for (int aa = ii; aa <= q; aa++)
for (int bb = jj; bb <= jmic; bb++)
b[aa][bb] = 1;
int l1 = q - ii + 1, l2 = jmic - jj + 1, x = a[i][j];
for (int k = 1; k <= min(l1, 100); k++)
if (d[x][k] < l2)
d[x][k] = l2;
for (int k = 1; k <= min(l2, 100); k++)
if (d[x][k] < l1)
d[x][k] = l1;
}
int nr;
fin >> nr;
while (nr--)
{
int t, l1, l2;
fin >> t >> l1 >> l2;
if (v[t] == 0)
cout << "Tara de provenienta nu are parcele pe Luna!" << '\n';
else
{
if (d[t][l1] < l2 && d[t][l2] < l1)
cout << "Cererea nu poate fi satisfacuta!" << '\n';
else
cout << "Cererea poate fi satisfacuta!" << '\n';
}
}
return 0;
}