Cod sursa(job #355992)

Utilizator mottyMatei-Dan Epure motty Data 12 octombrie 2009 22:34:27
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>

const int N=200002;

int n,v[N],r;

bool a1,a2;

void read()
{
	int x;
	scanf("%d",&n);
	for( int i=0 ; i<n ; ++i )
	{
		scanf("%d",&v[i]);
		x=v[i]%3;
		r+=x;
		if(x==1)
			a1=true;
		else if(x==2)
			a2=true;
	}
}

void solve()
{
	if(r%3==0)
	{
		printf("%d\n",n);
		return;
	}
	
	if(r%3==1)
	{
		if(a1==true)
		{
			printf("%d\n",n-1);
			for( int i=0 ; i<n ; ++i )
				if( v[i]%3==1 )
				{
					printf("%d ",v[i]);
					return;
				}
		}
		printf("%d\n",n-2);
		int x=2;
		for( int i=0 ; i<n && x ; ++i )
			if( v[i]%3==2 )
			{
				printf("%d ",v[i]);
				x--;
			}
		return;
	}
	
	else
	{
		if(a2==true)
		{
			printf("%d\n",n-1);
			for( int i=0 ; i<n ; ++i )
				if( v[i]%3==2 )
				{
					printf("%d ",v[i]);
					return;
				}
		}
		printf("%d\n",n-2);
		int x=2;
		for( int i=0 ; i<n && x ; ++i )
			if( v[i]%3==1 )
			{
				printf("%d ",v[i]);
				x--;
			}
		return;
	}
}

int main()
{
	freopen("trei.in","r",stdin);
	freopen("trei.out","w",stdout);
	read();
	solve();
	return 0;
}