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>
#include <stdlib.h>
typedef struct {
int x1;
int y1;
int x2;
int y2;
} lap_t;
typedef struct {
int ertek;
size_t hely;
} rendez_t;
lap_t l[100];
size_t n;
unsigned char tomb[200][200];
size_t max = 0;
int beolvas(void)
{
size_t i;
if (scanf("%u", &n) != 1) {
printf("hibas bemenet\n");
return 0;
}
for (i = 0; i < n; i++)
if (scanf("%d %d %d %d",
&l[i].x1, &l[i].y1, &l[i].x2, &l[i].y2) != 4) {
printf("hibas bemenet\n");
return 0;
}
return 1;
}
int seged_cmp(const void *a, const void *b)
{
const int *i = a, *j = b;
return *i - *j;
}
void rendez_x(void)
{
rendez_t seged[200];
int elozo;
size_t i, j = 0, hely;
for (i = 0; i < n; i++) {
seged[2 * i].ertek = l[i].x1;
seged[2 * i].hely = 2 * i;
seged[2 * i + 1].ertek = l[i].x2;
seged[2 * i + 1].hely = 2 * i + 1;
}
qsort(seged, 2 * n, sizeof(rendez_t), seged_cmp);
for (i = 0; i < 2 * n; i++) {
if (i != 0 && elozo != seged[i].ertek)
j++;
hely = seged[i].hely / 2;
if (seged[i].hely % 2 == 0)
l[hely].x1 = j;
else
l[hely].x2 = j;
elozo = seged[i].ertek;
}
}
void rendez_y(void)
{
rendez_t seged[200];
int elozo;
size_t i, j = 0, hely;
for (i = 0; i < n; i++) {
seged[2 * i].ertek = l[i].y1;
seged[2 * i].hely = 2 * i;
seged[2 * i + 1].ertek = l[i].y2;
seged[2 * i + 1].hely = 2 * i + 1;
}
qsort(seged, 2 * n, sizeof(rendez_t), seged_cmp);
for (i = 0; i < 2 * n; i++) {
if (i != 0 && elozo != seged[i].ertek)
j++;
hely = seged[i].hely / 2;
if (seged[i].hely % 2 == 0)
l[hely].y1 = j;
else
l[hely].y2 = j;
elozo = seged[i].ertek;
}
}
void rendez(void)
{
rendez_x();
rendez_y();
}
void hozzaad(int x1, int y1, int x2, int y2)
{
size_t i, j;
for (i = x1; i <= x2; i++)
for (j = y1; j <= y2; j++) {
tomb[i][j]++;
if (tomb[i][j] > max)
max = tomb[i][j];
}
}
void megold(void)
{
size_t i, j;
for (i = 0; i < 2 * n; i++)
for (j = 0; j < 2 * n; j++)
tomb[i][j] = 0;
for (i = 0; i < n; i++)
hozzaad(l[i].x1, l[i].y1, l[i].x2, l[i].y2);
}
int main(void)
{
if (!beolvas())
return 1;
rendez();
megold();
printf("%d\n", max);
return 0;
}