Cod sursa(job #467161)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 28 iunie 2010 12:24:57
Problema Cadrane Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 1.96 kb
#include <stdio.h>
#include <algorithm>
using namespace std;

int n, i, j, k;
int Min = 10000000, puncte;
int X, Y, nr;

struct punct
{
    int x;
    int y;
} ;

struct punct NE[100001], SV[100001];

int cmp_x (punct nr1, punct nr2)
{
    if (nr1.x != nr2.x)
        return nr1.x < nr2.x;
    else
        return nr1.y < nr2.y;
}

int cmp_y (punct nr1, punct nr2)
{
    if (nr1.y != nr2.y)
        return nr1.y > nr2.y;
    else
        return nr1.x > nr2.x;
}

int main ()
{
    FILE *f = fopen ("cadrane.in","r");
    FILE *g = fopen ("cadrane.out","w");
    fscanf (f,"%d",&n);

    for (i=1; i<=n; ++i)
    {
        fscanf (f,"%d %d", &NE[i].x, &NE[i].y);
        SV[i].x = NE[i].x;
        SV[i].y = NE[i].y;
    }


    sort (NE + 1, NE + n + 1, cmp_x);
    /*for (i=1; i<=n; ++i)
        printf ("%d %d\n", NE[i].x, NE[i].y);
    printf ("\n___________\n");
    sort (SV + 1, SV + 1 + n, cmp_y);*/
   /* for (i=1; i<=n; ++i)
        printf ("%d %d\n", SV[i].x, SV[i].y);*/

    for (i=1; i<=n; ++i)
    {
        for (k=1; k<=n; ++k)
        {
            puncte = 0;
            X = NE[i].x;
            Y = NE[k].y;
            for (j=1; j<=n; ++j)
                if (i != j)
                    if ( (NE[j].x <= X && NE[j].y <= Y)  )
                    {
                        puncte ++;
                        //printf ("%d %d\n", NE[j].x, NE[j].y);
                    }
            for (j=1; j<=n; ++j)
                if (SV[j].x != X || SV[j].y != Y)
                    //if (SV[j].x >= X&& SV[j].y >= Y)
                    {
                        puncte ++;
                        //printf ("%d %d\n", SV[j].x, SV[j].y);
                    }
            //printf ("pt pct %d %d avem %d puncte\n\n", NE[i].x, NE[i].y, puncte);
            if (puncte)
                Min = min (Min, puncte);
        }

    }

    //printf ("Min  = %d\n", Min);
    fprintf (g,"%d", Min);

    return 0;
}