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 <stdio.h>

int fir(const int *);
int sec(const int *);
int thi(const int *);

int main(void)
{
	int i, h[10];
	for (i = 0; i<10; i++){
		scanf("%d", &h[i]);
	}
	printf("%d\n", fir(h));
	printf("%d\n", sec(h));
	printf("%d\n", thi(h));
	return 0;
}

int fir(const int *h){
	int i, f = 0;
	for (i = 0; i<10; i++){
		f = f < h[i] ? h[i] : f;
	}
	return f;
}

int sec(const int *h){
	int i, f=0, s=0;
	for (i = 0; i<10; i++){
		f = f < h[i] ? h[i] : f;
	}
	for (i = 0; i<10; i++){
		s= f >= h[i] && s<h[i] ? h[i] :s;
	}
	return s;
}

int thi(const int *h){
	int i, f=0, s=0, t=0;
	for (i = 0; i<10; i++){
		f = f < h[i] ? h[i] : f;
	}
	for (i = 0; i<10; i++){
		s = f >= h[i] && s<h[i] ? h[i] : s;
	}
	for (i = 0; i<10; i++){
		t = f >= h[i] && t<h[i] ? h[i] : t;
	}
	return t;
}

C++: #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cctype>
#include<algorithm>
#define pf printf
#define sf scanf
#define wh while
#define db double
#define LL long long
#define _USE_MATH_DEFINES
#define re(i,a,b) for(int i=a;i<b;i++)
#define rev(i,a,b) for(int i=a;i>=b;i--)

using namespace std;
bool my(int i,int j){return (i>j);}
int main()
{
    int a[10];
    re(i,0,10)sf("%d",&a[i]);
    sort(a,a+10,my);
    re(i,0,3)pf("%d\n",a[i]);
    return 0;
}

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

int main()
{
  int a[11]={0};
  int i,j,maxa,maxb,maxc;
  

  for(i=0; i<10; i++){
    scanf("%d",&a[i]);
    //    maxa=max(maxa,a[i]);
  }

  for(i=0; i<10; i++){
    for(j=0; j<10; j++){
      if(a[i]<a[j]){
	swap(a[i],a[j]);
      }
    }
  }

  maxa=a[0];
  maxb=a[1];
  maxb=a[2];

  printf("%d\n%d\n%d\n",maxa,maxb,maxc);
  
  return 0;
}

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

int main(){
	int a,b,c,x;

	for(int i=0;i<=9;i++){
		cin >> x;

		if(x>a){
			c=b;
			b=a;
			a=x;
		}else if(x>b){
			c=b;
			b=x;
		}else if(x>c){
			c=x;
		}
	}

	cout << a << endl;
	cout << b << endl;
	cout << c << endl;

	return 0;
}

C++: #include<stdio.h>
nit mian(void)
{
	int i,j,n[11],w;
	for(i=0;i<10;i++){
		scanf("%d",n[i]);
	}
	for(i=0;i<10;i++){
		for(j=0;j<=10;j++){
			if(n[j]<=n[i]){
				w=n[i];
				n[i]=n[j];
				n[j]=w;
			}
		}
	}
	for(i=0;i<3;i++){
		printf("%d\n",y[i]);
	}
	return 0;
}

C++: #include <cstdio>
#include <cstdlib>


long long a[10];

int cmp (const void *p1, const void *p2) {
  if (* (long long *)p1 > * (long long *)p2) return 1;
  if (* (long long *)p1 == * (long long *) p2) return 0;
  return -1;
}

int main () {
  int i;
  for (i = 0; i < 10; i++) {
    scanf("%lld", a + i);
  }
  qsort(a, 10, sizeof(long long),  cmp);
  for (i = 0; i < 3; i++) {
    printf("%lld\n", a[9-i]);
  }
  return 0;
}

C++: #include <iostream>

int main(int argc, char ** argv) {
  int input, top[3] = {0};
  for (int i=0; i<10; i++) {
    std::cin >> input;
    if (input >= top[0]) {
      top[2] = top[1];
      top[1] = top[0];
      top[0] = input;
    }
  }

  for (int i=0; i<3; i++) {
    std::cout << top[i] << std::endl;
  }
}

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

int main(){
  int a;
  vector<int> v;

  for (unsigned int i = 0; i < 10; i++) {
    cin >> a;
    v.push_back(a);
    if (cin.eof()) { break; }
  }

  for (unsigned int i = 0; i < 3; i++) {
    cout << v[i] << endl;
  }

  sort(v.begin(), v.end());
  return 0;
}

C++: #include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include <string>
#include <sstream>
#include <numeric>
#include <set>
#include <map>
//#include <bits/stdc++.h>

#define rep(i, j) for(int i = 0; i < j; i++)
#define all(i) i.begin(), i.end()
#define ll long long
#define bl bool
#define nn printf("\n");
#define mod 1000000007

using namespace std;

int main()
{
	cin.tie(0);
	ios::sync_with_stdio(false);

	vector<int> dat(10, 0);
	rep(i, 10) { cin >> dat[i]; }
	sort(all(dat));
	rep(i, 3) { printf("%d\n", dat[9 - i]); }

	return 0;
}

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

class Mountain {
public:
	int mountain[10];
	void get();
	void sort(int yama[10]);
	void show();
};

void Mountain::get() {
	for (int i = 0; i < 10; i++) {
		cin >> mountain[i];
	}
}

void Mountain::sort(int yama[10]) {
	int work;
	for (int i = 0; i < 9; i++) {
		for (int j = 0; j < 9; j++) {
			if (yama[j] < yama[j + 1]) {
				work = yama[j];
				yama[j] = yama[j + 1];
				yama[j + 1] = work;
			}
		}
	}
}

void Mountain::show() {
	for (int i = 0; i < 3; i++) {
		cout << mountain[i] << endl;
	}
}

int main() {
	Mountain mou;
	mou.get();
	mou.sort(mou.mountain);
	mou.show();
}

C++: #include<iostream>
using namespace std;int main(){ int i = 0,j=0,k=0;
int mountain[11] = {1819,2003,876,2840,1723,1673,3776,2848,1592,922}; for(i=0;i<10;i++){
for(j=i+1;j<10;j++){
if(mountain[i] < mountain[j]){
k = mountain[j];
mountain[j] = mountain[i] ;
mountain[i] = k ;
}
}
} for(i=0;i<3;i++){
cout << mountain[i] <<"\n" ;
}
return 0;
}

C++: #include <cmath>
#include <ctime>
#include <algorithm>
#include <iostream>
#include <map>
#include <numeric>
#include <set>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <deque>
#include <stack>
#include <bitset>
#include <functional>
#include <numeric>
#include <utility>
#include <iomanip>
#include <cstdio>
#include <cctype>
#include <queue>
#include <complex>
#include <climits>

typedef long long ll;

using namespace std;

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

	sort(h, h+10, greater<int>());

	cout << h[0] << endl << h[1] << endl << h[2] << endl;

	return 0;
}

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

int main(){
    int n;
    int m[3];
    m[0]=m[1]=m[2]=0;
    for(int i=0;i<10;i++)
    {
        cin >> n;
        if(n>m[0]) { m[2]=m[1]; m[1]=m[0]; m[0] = n;}
        else if(n>m[1]){ m[2]=m[1]; m[1] = n; }
        else if(n>m[2]) m[2] = n;
    }
    for(int i=0;i<3;i++) cout << m[i] << endl;
    return 0;
}

C++: #include<iostream>
#include<algorithm>
using namespace std;
int main(){
  int hill[10];
  for(int i=0; i<10; i++){
    cin >>hill[i];
  }
  sort(hill,hill+10);
  cout <<hill[9]<<endl<<hill[8]<<endl<<hill[7]<<endl;
  return 0;
}

C++: /*
 *  Author: mizo0203
 *  Problem: 0001
 *  Status: Accepted
 *  Submission Date: 2012/04/15 01:49:02
 *
 *  方策：クイックソートを行う．
 *  C言語の標準ライブラリ<stdlib.h>にもqsort()という
 *  クイックソートを行う関数があるが，扱いにくいためC++の
 *  標準ライブラリ<algorithm>のsort()を使用する．
 */
#include <stdio.h>
#include <algorithm> // sort()を使うのに必要

// C++のライブラリを使用するのに必要
using namespace std;

int h[10];

void input() {
  int i;

  for (i = 0; i < 10; i++) {
    scanf("%d", &h[i]);
  }
}

int main() {
  int i;

  input();
  sort(h, h + 10);
  for (i = 0; i < 3; i++)
    printf("%d\n", h[9 - i]);

  return 0;
}