Thank you, Net Knight, The code is better in style than mine.

B.R.
/Thomas An

2009/8/28 Net Knight <[email protected]>

>
> This is the code in my harddisk,
> I can't remenber who wrote it:
> -------------------------------------------------------------
> #include <iostream>
>
> using namespace std;
>
> #define Rep(i,n) for (int i(0),_n(n); i<_n; ++i)
>
> struct Flavor{
>    int X;
>    char Y;
> };
>
> struct Customer{
>    int T;
>    Flavor* F;
>    Customer() {
>        F = NULL;
>    }
>    ~Customer() {
>        if(NULL!=F) {
>            delete[] F;
>            F = NULL;
>        }
>    }
>    void Init(int t) {
>        T = t;
>        F = new Flavor[T];
>    }
>    void SetFlavor(int i, int X, int Y) {
>        F[i].X = X;
>        F[i].Y = Y;
>    }
>    int GetFlavorX(int i) {
>        return F[i].X;
>    }
>    int GetFlavorY(int i) {
>        return F[i].Y;
>    }
>    bool IsSatisfied() {
>        return T==0;
>    }
>    void Satisfy() {
>        T=0;
>        if(NULL!=F) {
>            delete[] F;
>            F = NULL;
>        }
>    }
>    bool IsSatisfing(int i, int *f) {
>        return f[F[i].X]==F[i].Y;
>    }
>    void SetMalted(int i, int *f) {
>        f[F[i].X] = 1;
>    }
> };
>
> int main()
> {
>    int C;
>    FILE *fp = fopen("A.out", "w");
>    scanf("%d", &C);
>    Rep(c, C) {
>        int N;
>        scanf("%d", &N);
>        int* f = new int[N+1];
>        Rep(i ,N+1) {
>            f[i]=0;
>        }
>        int M;
>        scanf("%d", &M);
>        Customer* customer = new Customer[M];
>        Rep(m, M) {
>            int T;
>            scanf("%d", &T);
>            customer[m].Init(T);
>            Rep(t, T) {
>                int X, Y;
>                scanf("%d%d", &X,&Y);
>                customer[m].SetFlavor(t,X,Y);
>            }
>        }
>        bool findSolution = true;
>        int m = 0;
>        while(m<M) {
>            if(customer[m].IsSatisfied()) {
>                m++;
>                continue;
>            }
>            bool malted = false;
>            int idx;
>            bool satisfied = false;
>            Rep(t, customer[m].T) {
>                if(customer[m].GetFlavorY(t)==1) {
>                    malted = true;
>                    idx = t;
>                }
>                if(customer[m].IsSatisfing(t,f)) {
>                    satisfied = true;
>                }
>            }
>            if(!satisfied) {
>                if(malted) {
>                    customer[m].SetMalted(idx,f);
>                    customer[m].Satisfy();
>                    m=0;
>                } else {
>                    findSolution = false;
>                    break;
>                }
>            } else {
>                m++;
>            }
>        }
>        fprintf(fp,"Case #%d: ", c+1);
>        if(findSolution) {
>            Rep(i ,N) {
>                fprintf(fp,"%d ", f[i+1]);
>            }
>            fprintf(fp,"\n");
>        } else {
>            fprintf(fp,"IMPOSSIBLE\n");
>        }
>        delete[] customer;
>        delete[] f;
>
>    }
>    fclose(fp);
> }
>
> -------------------------------------------------------------
>
> On 8月27日, 下午9时28分, thomasan <[email protected]> wrote:
> > Hello,everyone,
> >
> >     This is the first time i participate in the GCJ contest, i am a
> > little confused about the MilkShake problem in Round1A, is there any
> > code solution to this problem writing in C++?
> > Could somebody give your code solution to this problem to me, then i
> > can read it as a reference! Thanks in advance!
> >
> >      Best regards!
> >
> >      /Thomas
>
> >
>


-- 
安海林 / Thomas
Make a difference for your life
MSN : [email protected]

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-codejam" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-code?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to