Cod sursa(job #18740)

Utilizator Omega91Nicodei Eduard Omega91 Data 18 februarie 2007 13:04:49
Problema Zone Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.09 kb
#include <fstream>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
ifstream f1("amlei.in");
ofstream f2("amlei.out");
main()
{

    int n, p1[51][501], p2[51][501],t,u,i,j, vec1[501], vec2[501], vecf1[501], vecf2[501];
    int aux, k, k2;
    bool stop;
    while (!f1.eof())
    {
        f1>>n>>t>>u;
        for (i=1; i<=n*t; i++)
        {
                f1>>aux;
                
                if (abs(aux)==aux)
                {
                    p1[(int)floor((i-1)/3)+1][aux]=1;
                    //cout<<p1[(int)floor((i-1)/3)+1][aux];
                    //cout<<(int)floor((i-1)/3)+1<<" "<<aux<<endl;
                }
                else
                {
                    p1[(int)floor((i-1)/3)+1][abs(aux)]=0;
                    //cout<<p1[(int)floor((i-1)/3)+1][abs(aux)];
                    //cout<<(int)floor((i-1)/3)+1<<" "<<abs(aux)<<endl;         
                }
        }
        for (i=1; i<=n*u; i++)
        {
                f1>>aux;
                if (abs(aux)==aux)
                    p2[(int)floor((i-1)/3)+1][aux]=1;
                else
                    p2[(int)floor((i-1)/3)+1][abs(aux)]=0;
        }
        /*for (i=1; i<=t; i++)
        {
            for (j=1; j<=n; j++)
                cout<<p1[i][j];
            cout<<endl;
        }*/
        for (i=1; i<=t; i++)
        {
            for (j=n; j>=1; j--)
                vec1[i]+=p1[i][j]*pow(2,n-j);

        }
        for (i=1; i<=u; i++)
        {
            for (j=n; j>=1; j--)
                vec2[i]+=p2[i][j]*pow(2,n-j);

        }
        while(!stop)
        {
            stop=true;
            for (i=1; i<=t-1; i++)
                if (vec1[i]>vec1[i+1])
                {
                    stop=false;
                    aux=vec1[i];
                    vec1[i]=vec1[i+1];
                    vec1[i+1]=aux;
                }       
        }
        stop=false;
        while(!stop)
        {
            stop=true;
            for (i=1; i<=u-1; i++)
                if (vec2[i]>vec2[i+1])
                {
                    stop=false;
                    aux=vec2[i];
                    vec2[i]=vec2[i+1];
                    vec2[i+1]=aux;
                }       
        }

            
        k=1;
        vecf1[k]=vec1[1];
        for (i=2; i<=t; i++)
            if (vecf1[k]!=vec1[i])
            {
                k++;
                vecf1[k]=vec1[i];
            }
        k2=1;
        vecf2[k2]=vec2[1];
        for (i=2; i<=u; i++)
            if (vecf2[k2]!=vec2[i])
            {
                k2++;
                vecf2[k2]=vec2[i];
            }
        if (k!=k2)
        {
            f2<<"NU"<<endl;
        }
        stop=false;
        if (k==k2) 
        {
            for (i=1; i<=k; i++)
            {
                if (vecf1[i]!=vecf2[i])
                {
                    f2<<"NU"<<endl;
                    stop=true;
                }
                if (stop==false)f2<<"DA"<<endl;
            }
        }
    }

}