Cod sursa(job #158429)

Utilizator MirageRobert Sandu Mirage Data 13 martie 2008 17:22:23
Problema Stergeri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int main () {
	freopen("prieteni.in","r",stdin);
	freopen("prieteni.out","w",stdout);
	int n,v[1000],i,max,s=0;
	scanf("%d",&n);
	max=n-1;
	for(i=0;i<n;++i)
		scanf("%d",&v[i]);
	sort(v,v+n);
	if(n==1){
		printf("%d\n%d\n",v[0],v[0]);
		return 0;
	}
	if(n==2){
		printf("%d %d\n%d",v[0],v[1],v[0]+v[1]);
		return 0;
	}
	if(n==3){
		printf("%d %d\n",v[0],v[1]);
		printf("%d\n",v[0]);
		printf("%d %d\n",v[0],v[2]);
		printf("%d",v[0]+v[1]+v[2]);
		return 0;
	}
	if(n%2==0){
		while(max>1){
			printf("%d %d\n",v[0],v[1]);
			printf("%d\n",v[0]);
			printf("%d %d\n",v[max],v[max-1]);
			printf("%d\n",v[1]);
			s+=v[1]+v[max]+v[1]+v[0];
			max-=2;
		}
		printf("%d %d\n",v[0],v[1]);
		s+=v[1];
		printf("%d\n",s);
	}
	else{
		while(max>2){
			printf("%d %d\n",v[0],v[1]);
			printf("%d\n",v[0]);
			printf("%d %d\n",v[max],v[max-1]);
			printf("%d\n",v[1]);
			s+=v[1]+v[max]+v[0]+v[1];
			max-=2;
		}
		printf("%d %d\n",v[0],v[1]);
		printf("%d\n",v[0]);
		printf("%d %d\n",v[0],v[2]);
		s+=v[1]+v[0]+v[2];
		printf("%d\n",s);
	}
	return 0;
}