Go: package main

import (
        "fmt"
        "bufio"
        "os"
        "strconv"
)

func main() {
        fp := os.Stdin
        scanner := bufio.NewScanner(fp)
        var lst [3]int

        for scanner.Scan() {
                num, _ := strconv.Atoi(scanner.Text())
                if lst[0] < num {
                        lst[2] = lst[1]
                        lst[1] = lst[0]
                        lst[0] = num
                } else if lst[1] < num {
                        lst[2] = lst[1]
                        lst[1] = num
                } else if lst[2] < num {
                        lst[2] = num
                }
        }

        for _, i := range lst {
                fmt.Printf("%d\n", i)
        }
}

C++: #include<iostream>

#define     MAX_NUMBER              10
#define     MOUNTAIN_HEIGHT_MIN     0
#define     MOUNTAIN_HEIGHT_MAX     10000
#define     MAX_SHOW_NUMBER         3

using namespace std;

int main(){
	int i,j;
	int num[MAX_NUMBER];
	bool flag;

	// MAX_NUMBER の値をチェック (プログラマのミスを防ぐ)
	if(((int)MAX_NUMBER) <= 0){
		cerr << "エラー：MAX_NUMBERの値が0以下です" << endl;
		return -1;
	}

	// 値の入力・チェック
	for(i=0;i<((int)(MAX_NUMBER));i++){
		// 値の入力
		cin >> num[i];
		// 値のチェック
		if(num[i] < ((int)MOUNTAIN_HEIGHT_MIN)){
			cerr << "エラー：" << i <<"番目の山の高さが" << ((int)MOUNTAIN_HEIGHT_MIN) << "メートル未満です" << endl;
			return -1;
		}else if(num[i] > ((int)MOUNTAIN_HEIGHT_MAX)){
			cerr << "エラー：" << i <<"番目の山の高さが" << ((int)MOUNTAIN_HEIGHT_MAX) << "メートルより大きいです" << endl;
			return -1;
		}
	}

	// 並び替えループ
	do{
		flag = false;
		for(i=0;i < (((int)(MAX_NUMBER)) - 1);i++){
			if(num[i] < num[i+1]){
				j = num[i];
				num[i] = num[i+1];
				num[i+1] = j;
				flag = true;
			}
		}
	}while(flag == true);

	for(i=0;i<((int)(MAX_SHOW_NUMBER));i++){
		cout << num[i] << endl;
	}

	return 0;
}

C++: #include<iostream>
using namespace std;

int main(){
	int i,j,a[10],t;
	for(i=0;i<10;i++)
	{
		cin>>a[i];
	}
	for(i=0;i<9;i++)
		for(j=i+1;j<10;j++)
			if(a[i]<a[j])
		   {
			  t=a[i];
			  a[i]=a[j];
			  a[j]=t;
		  }
	for(i=0;i<3;i++)
	{
		cout<<a[i]<<endl;
	}
    return 0;
}

C++: #include <stdio.h>
#include <stdlib.h>
#define MAXN 10
typedef struct DNode
{
  int data;
  DNode *next;	
}llist;
void creatlist(llist*&head,int a[],int n)
{
	llist *pre,*q;
	head=(llist *)malloc(sizeof(llist));
	pre=head;
	for(int i=1;i<=n;i++)
	{
	 q=(llist *)malloc(sizeof(llist));
	 q->data=a[i];
     pre->next=q;
     pre=q; 
	}
	pre->next=NULL;
}
void swapi(llist*&L)
{
 llist *q,*p;
 q=L->next;
 p=L->next->next;
 q->next=NULL;
 L->next=p;
 q->next=p->next;
 p->next=q;  	
}

bool sorti(llist*&L)
{
  llist *p,*q;
  p=L->next;
  q=L;
  int count=0,c2;
  while(p->next!=NULL)
  {
   count++;
   p=p->next;	
  }
  c2=count;
  if(L->next->next==NULL&&L->next==NULL)
  return 0;
  else
  {
  	while(count--)
  	{
  		c2=count+1;
 	  while(c2--)
 	  {
  	 	if(q->next->data<q->next->next->data)
  	 	swapi(q);
		q=q->next; 	
  	  }
  	   q=L;
    }
  }	
}
int main()
{
    int a[MAXN];
    llist *p;
    for(int i=1;i<=MAXN;i++)
    scanf("%d",&a[i]);
    creatlist(p,a,MAXN);
    sorti(p);
    for(int i=1;i<=3;i++)
    {
      p=p->next;
   	  printf("%d\n",p->data);
    }  
	return 0;
}

C++: #include <iostream>
#include <vector>
#include <algorithm>
int main() {
	int n;
	std::vector<int> vec;
	for (int i = 0; i < 10; i++) {
		std::cin >> n;
		vec.emplace_back(n);
	}
	std::sort(vec.begin(), vec.end());
	for (int i = 9; i > 6; i--) {
		std::cout << vec[i] << std::endl;
	}
}

C++: #include <iostream>
#include <algorithm>
using namespace std;

int main(){
 int hills[10];
 for(int i  =0;i<10;i++){
 cin >> hills[i];
 }
 sort(hills,hills+10);
 cout << hills[9] << endl << hills[8] << endl << hills[7] << endl;
 return 0;
}

C++: #include<iostream>
#include<cstdio>
using namespace std;

int main(){

	int hill[]={0,0,0,0,0,0,0,0,0,0};

	for(int j=0;j<=9;j++){
		scanf("%d",&hill[j]);
	}

	int key;

	//sort
	for(key=9;key>=0;key--){

		for(int i=0;i<=key;i++){
			if(hill[i]>hill[i+1]){
				swap(hill[i],hill[i+1]);
			}
		}

	}

	printf("%d%d%d",hill[9],hill[8],hill[7]);

	return 0;

}

C++: #include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
    vector<int> h(11);
    for(int i=0;i<10;i++)cin >> h[i];

    sort(h.begin(),h.end(), greater<int>() );
    cout << h[0]<<endl;
    cout << h[1]<<endl;
    cout << h[2]<<endl;

    return 0;
}

C++: #include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>

#define BOGO 10

using namespace std;

int main()
{
	int arr[BOGO];
	bool found;
	int j;
	srand(static_cast<unsigned int>(time(NULL)));
	
	for(int i = 0; i < BOGO; i++){
		cin >> arr[i];
	}
	
	for(;;){
		
		/**
		for(int j = 0; j < BOGO; j++){
			cout << arr[j] << flush;
		}
		cout << endl;
		/**/
		
		found = true;
		for(j = 0; j < BOGO-1; j++){
			if(arr[j] > arr[j+1]){
				found = false;
				break;
			}
		}
		
		if(found){
			break;
		}
		random_shuffle(arr, arr+BOGO);
	}
	cout << arr[9] << "\n" << arr[8] << "\n" << arr[7] << endl;
}

C++: #include <bits/stdc++.h>
using namespace std;

int main() {
	vector<int> v(10);
	for (int i = 0; i < 10; i++) {
		cin >> v.at(i);
	}

	sort(v.begin(), v.end());
	reverse(v.begin(), v.end());
	for (int i = 0; i < 3; i++) {
		cout << v.at(i) << endl;
	}
}