Informatika gyűjtemény

Egy szinttel feljebb mb_lapok.c

2004050607080910

NézetNyomtat

mb_lapok.c (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
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 (= 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 *= a, *= b;

    return *- *j;
}

void rendez_x(void)
{
    rendez_t seged[200];
    int elozo;
    size_t i, j = 0, hely;

    for (= 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 (= 0; i < 2 * n; i++) {
        if (!= 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 (= 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 (= 0; i < 2 * n; i++) {
        if (!= 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 (= x1; i <= x2; i++)
        for (= y1; j <= y2; j++) {
            tomb[i][j]++;
            if (tomb[i][j] > max)
                max = tomb[i][j];
        }
}

void megold(void)
{
    size_t i, j;

    for (= 0; i < 2 * n; i++)
        for (= 0; j < 2 * n; j++)
            tomb[i][j] = 0;

    for (= 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;
}
(Vissza)