Cod sursa(job #192307)

Utilizator cefacialtfelSimionescu Tudor cefacialtfel Data 31 mai 2008 10:46:02
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream.h>
#include <iostream.h>
#include <stdio.h>
int xm, ym, n, *vx, *vy;
int contine (int x1, int y1, int x2, int y2)
{
    for (int i = 0; i < n; i++)
         if ((x1 < vx[i]) && (x2 > vx[i])) if ((y1 < vy[i]) && (y2 > vy[i])) return 1;
    return 0;
}
int ariamax ()
{
    int amax = 0;
    for (int i = 0; i<n + 4; i++)
        for (int j = 0; j < n + 4; j++)
             {
                 if (i != j)
                 {
                       int a = (abs (vx[i] - vx[j]) * abs (vy[i] - vy[j]) );
                       if (a > amax) if (!contine (vx[i], vy[i], vx[j], vy[j])) amax = a;
                       }
                       }
    return amax;
}

int main ()
{
    FILE *f = fopen ("dr.in", "r");
    FILE *g  =fopen ("dr.out", "w");
    int t;
    fscanf (f, "%d", t);
    for (int i = 0; i < t; i++)
        {
             fscanf (f, "%d%d%d", n, xm, ym);
             for (int j = 0; j < n; j++)
                 fscanf (f, "%d%d", vx[j], vy[j]);
             vx[n] = vy[n] = 0;
             vx[n+1] = xm;
             vy[n+1] = ym;
             vx[n+2] = 0;
             vy[n+2] = ym;
             vx[n+3] = xm;
             vy[n+3] = 0;
             fprintf (g, "%d\n", ariamax());
             }
    fclose (f);
    fclose (g);
}