Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 2 KB
#include <stdio.h>
#ifdef KEP
#include <gd.h>
#define NEGYZET 10
#endif
typedef struct {
int x;
int y;
} mezo_t;
typedef struct {
mezo_t bf;
mezo_t ja;
} parcella_t;
parcella_t p[3001];
int k;
#ifdef KEP
int kep_x, kep_y;
#endif
void berak(int x, int y)
{
parcella_t *q;
int i, bf_x, bf_y, ja_x, ja_y;
for (i = 0; i < k; i++) {
q = &p[i];
if (q->bf.x <= x && q->bf.y <= y &&
q->ja.x >= x && q->ja.y >= y) {
bf_x = q->bf.x;
bf_y = q->bf.y;
ja_x = q->ja.x;
ja_y = q->ja.y;
q->ja.x = x - 1;
q->ja.y = y - 1;
q = &p[k++];
q->bf.x = x + 1;
q->bf.y = bf_y;
q->ja.x = ja_x;
q->ja.y = y - 1;
q = &p[k++];
q->bf.x = bf_x;
q->bf.y = y + 1;
q->ja.x = x - 1;
q->ja.y = ja_y;
q = &p[k++];
q->bf.x = x + 1;
q->bf.y = y + 1;
q->ja.x = ja_x;
q->ja.y = ja_y;
return;
}
}
}
int beolvas(void)
{
int i, x, y, z;
if (scanf("%d %d %d", &x, &y, &z) != 3) {
printf("hibas bemenet\n");
return 0;
}
p[0].bf.x = 0;
p[0].bf.y = 0;
p[0].ja.x = x - 1;
p[0].ja.y = y - 1;
k = 1;
#ifdef KEP
kep_x = x;
kep_y = y;
#endif
for (i = 0; i < z; i++) {
if (scanf("%d %d", &x, &y) != 2) {
printf("hibas bemenet\n");
return 0;
}
berak(x - 1, y - 1);
}
return 1;
}
void kiir(void)
{
#ifdef KEP
gdImagePtr im;
int feher, fekete, piros, maxx, maxy;
parcella_t *pmax = 0;
#endif
int i, max = 0, t;
parcella_t *q;
#ifdef KEP
maxx = kep_x * NEGYZET;
maxy = kep_y * NEGYZET;
im = gdImageCreate(maxx + 1, maxy + 1);
if (!im) {
printf("nem tudom letrehozni a kepet\n");
return;
}
feher = gdImageColorAllocate(im, 255, 255, 255);
fekete = gdImageColorAllocate(im, 0, 0, 0);
piros = gdImageColorAllocate(im, 255, 0, 0);
for (i = 0; i < kep_x; i++)
gdImageLine(im, 0, i * NEGYZET, maxx, i * NEGYZET, fekete);
for (i = 0; i < kep_y; i++)
gdImageLine(im, i * NEGYZET, 0, i * NEGYZET, maxy, fekete);
gdImageLine(im, 0, maxy, maxx, maxy, fekete);
gdImageLine(im, maxx, 0, maxx, maxy, fekete);
#endif
for (i = 0; i < k; i++) {
q = &p[i];
if (q->bf.x > q->ja.x || q->bf.y > q->ja.y)
continue;
t = (q->ja.x - q->bf.x + 1) * (q->ja.y - q->bf.y + 1);
if (t > max) {
max = t;
#ifdef KEP
pmax = q;
#endif
}
#ifdef KEP
gdImageFilledRectangle(im, q->bf.x * NEGYZET,
q->bf.y * NEGYZET,
(q->ja.x + 1) * NEGYZET,
(q->ja.y + 1) * NEGYZET, fekete);
#endif
}
printf("%d\n", max);
#ifdef KEP
if (pmax)
gdImageFilledRectangle(im, pmax->bf.x * NEGYZET,
pmax->bf.y * NEGYZET,
(pmax->ja.x + 1) * NEGYZET,
(pmax->ja.y + 1) * NEGYZET, piros);
gdImagePng(im, stderr);
gdImageDestroy(im);
#endif
}
int main(void)
{
if (!beolvas())
return 1;
kiir();
return 0;
}