Primul-joc

From Algopedia
Jump to navigationJump to search
/*
   Nume program   : primul-joc.c
   Nume concurent : Priboi Radu si Alex Mitrofan
*/
#include <stdio.h>
#include <stdlib.h>

int v[30],v1[30],m16[30],m8[30],m4[30],m2[30],m1[30];

int main()
{int i,n,c1,j,n1,n2,cv,sm16,sm8,sm4,sm2,sm1,nrm;
    char c;
    i=0;
    do {
        scanf("%d",&v[i]);
        c=fgetc(stdin);
        i++;
    } while (c!='\n');
    n=i;
    j=0;
    c1=0;
    for (i=0;i<n;i++)
        if (v[i]!=0) {
            c1++;
            v1[j]=i;
            j++;
        }
    n1=j;
    if (c1==1) {
        i=0;
        while (v[i]==0)
            i++;
        v[i]=0;
    }
        if (c1==2) {
        if (v[v1[0]]==v[v1[1]])
            v[v1[0]]--;
        else
            if (v[v1[0]]>v[v1[1]])
                v[v1[0]]=v[v1[1]];
            else
                if (v[v1[0]]<v[v1[1]])
                    v[v1[1]]=v[v1[0]];
    }
    else {
        for (i=0;i<n;i++) {
            cv=v[i];
            while (cv>=16) {
                m16[i]++;
                cv=cv-16;
            }
            while (cv>=8) {
                m8[i]++;
                cv=cv-8;
            }
            while (cv>=4) {
                m4[i]++;
                cv=cv-4;
            }
            while (cv>=2) {
                m2[i]++;
                cv=cv-2;
            }
            while (cv>=1) {
                m1[i]++;
                cv--;
            }
        }
        sm16=0;
        for (i=0;i<n;i++)
            sm16=sm16+m16[i];
        sm8=0;
        for (i=0;i<n;i++)
            sm8=sm8+m8[i];
        sm4=0;
        for (i=0;i<n;i++)
            sm4=sm4+m4[i];
        sm2=0;
        for (i=0;i<n;i++)
            sm2=sm2+m2[i];
        sm1=0;
        for (i=0;i<n;i++)
            sm1=sm1+m1[i];
        if (sm16%2==1)
            sm16=1;
        else
            sm16=0;
        if (sm8%2==1)
            sm8=1;
        else
            sm8=0;
        if (sm4%2==1)
            sm4=1;
        else
            sm4=0;
        if (sm2%2==1)
            sm2=1;
        else
            sm2=0;
        if (sm1%2==1)
            sm1=1;
        else
            sm1=0;
        if (sm16+sm8+sm4+sm2+sm1>=1) {
            if (sm16==1) {
                i=0;
                while (m16[i]==0)
                    i++;
                v[i]=v[i]-16;
            }
            else
                if (sm8==1) {
                    i=0;
                    while (m8[i]==0)
                        i++;
                    v[i]=v[i]-8;
                }
                else
                    if (sm4==1) {
                        i=0;
                        while (m4[i]==0)
                            i++;
                        v[i]=v[i]-4;
                    }
                    else
                        if (sm2==1) {
                            i=0;
                            while (m2[i]==0)
                                i++;
                            v[i]=v[i]-2;
                        }
                        else
                            if (sm1==1) {
                                i=0;
                                while (m1[i]==0)
                                    i++;
                                v[i]--;
                                }
        }
        else {
            i=0;
            while (v[i]==0)
                i++;
            if (n1%2==0)
                v[i]--;
            else
                v[i]=0;
        }
    }
    printf("%d",v[0]);
    for (i=1;i<n;i++)
        printf(" %d",v[i]);
    printf("\n");
    return 0;
}