Primul-joc
From Algopedia
/*
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;
}