Go: package main

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

var sc = bufio.NewScanner(os.Stdin)

func nextLine() string {
	sc.Scan()
	return sc.Text()
}

func nextLineInt() []int {
	arr := strings.Split(nextLine(), " ")
	var ret []int
	for _, v := range arr {
		x, _ := strconv.Atoi(v)
		ret = append(ret, x)
	}
	return ret
}

type Pair struct {
	First int
	Second int
}

type Pairs []Pair

func (s Pairs) Len() int {
	return len(s)
}

func (s Pairs) Swap(i, j int) {
	s[i], s[j] = s[j], s[i]
}

func (s Pairs) Less(i, j int) bool {
	return s[i].First > s[j].First
}

func main() {
	var n int
	arr := nextLineInt()
	n = arr[0]
	result := []Pair{}
	for i := 0; i < n; i++ {
		result = append(result, Pair{0, i})
	}
	for i := 0; i < n * (n - 1) / 2; i++ {
		arr := nextLineInt()
		A := arr[0]
		B := arr[1]
		C := arr[2]
		D := arr[3]
		if C > D {
			result[A-1].First += 3
		} else if C < D {
			result[B-1].First += 3
		} else {
			result[A-1].First++
			result[B-1].First++
		}
	}
	sort.Sort(Pairs(result))
	var ans [111]int
	point := 1000000000
	top := 0
	for i, r := range result {
		// 前の人よりポイントが低い
		if point > r.First {
			top = i + 1
			point = r.First
		}
		ans[r.Second] = top
	}
	for i := 0; i < n; i++ {
		fmt.Println(ans[i])
	}
}

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

int main(){
  int teamn = 0;
  cin >> teamn;
  vector<int> point(teamn,0);
  vector<int> run(teamn,0);
  vector<int> rank(teamn,1);
  int fteam1,fteam2;
  int point1,point2;
  for(int n = 0;n<(teamn*(teamn-1))/2;n++){
    cin >> fteam1 >> fteam2;
    cin >> point1 >> point2;
    fteam1 -= 1;
    fteam2 -= 1;
    if(point1 > point2){
      point[fteam1] += 3;
    }else
    if(point1 == point2){
      point[fteam1] += 1;
      point[fteam2] += 1;
    }else
    if(point1 < point2){
      point[fteam2] += 3;
    }
  }
  for(int g = 0;g<point.size();g++){
    run[g] = point[g];
  }
  sort(run.begin(),run.end(),greater<int>());
  for(int n = 0;n<run.size();n++){
    for(int g = 0;g<point.size();g++){
      if(n == 0 && run[n] == point[g]){
        rank[g] = n;
      }
      if(run[n] == point[g] && n != 0){
        if(run[n] != run[n-1]){
          rank[g] = n;
        }
      }
    }
  }
  for(int n = 0;n<rank.size();n++){
    cout << rank[n]+1 << endl;
  }
  return 0;
}

C++: #include <vector>
#include <list>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <deque>
#include <algorithm>
#include <utility>
#include <functional>
#include <sstream>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <climits>
#include <cassert>

using namespace std;

typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<string> vs;
typedef pair<int,int> pii;
typedef long long ll;

#define ALL(a) (a).begin(),(a).end()
#define RALL(a) (a).rbegin(),(a).rend()
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)

int main()
{
	int N;
	cin >> N;

	vvi point(N, vi(2));
	REP(i, N) {
		point[i][1] = i;
	}

	int a, b, c, d;
	REP(i, N*(N-1)/2) {
		cin >> a >> b >> c >> d;
		if(c < d) {
			point[b-1][0] += 3;
		} else if(c > d) {
			point[a-1][0] += 3;
		} else {
			point[a-1][0]++;
			point[b-1][0]++;
		}
	}

	sort(RALL(point));

	int prev = -1, t = 0;
	vi rank(N);
	REP(i, N) {
		if(point[i][0] == prev) {
			t++;
			rank[point[i][1]] = i+1-t;
		} else {
			t = 0;
			rank[point[i][1]] = i+1;
		}
		prev = point[i][0];
	}

	REP(i, N) {
		cout << rank[i] << endl;
	}
}

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

int main()
{	
	//サッカー

	int N;
	cin >> N;
	int P[100];
	for (int i = 0; i < 100; i++) {
		P[i] = 0;
	}
	for (int i = 0; i < N*(N - 1) / 2; i++) {
		int a, b,c,d;
		cin >> a >> b >> c >> d;
		if (c > d) 
			P[a] += 3;
		if (c == d) {
			P[a]++;
			P[b]++;
		}
		if (c < d)
			P[b] += 3;
	}
	int Q[100];
	for (int i = 0; i < N; i++) {
		Q[i] = P[i];
	}
	sort(Q, Q + 100);
	reverse(Q, Q + 100);
	int Ans[100];
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			if (P[i] == Q[j]) {
				Ans[i] = j+1;
			}
		}
	}
	for (int i = 0; i < N; i++) {
		cout << Ans[i] << endl;
	}

	//レシート
	/*
	int N;
	int ans[5];
	int a;
	int i = 0;
	while (true)
	{
		cin >> N;
		if (N == 0) break;
		for (int j = 0; j < 9; j++) {
			cin >> a;
			N -= a;
		}
		ans[i] = N;
		i++;
	}
	for (int k = 0; k < 5; k++)
		cout << ans[k] << endl;
	*/
	//コンテスト	
	/*
	int W[10], K[10];
	for (int i = 0; i < 10; i++) {
		cin >> W[i];
	}
	for (int i = 0; i < 10; i++) {
		cin >> K[i];
	}
	sort(W, W + 10);
	reverse(W, W + 10);
	sort(K, K + 10);
	reverse(K, K + 10);
	cout << W[0] + W[1] + W[2] << " " << K[0] + K[1] + K[2] << endl;
	*/
	//ポイントカード
	/*
	int N, M;
	cin >> N >> M;
	int a;
	int A[5000];
	int b = 0;
	int x = 0;
	for (int i = 0; i <  M; i++) {
		cin >> a;
		if (a < N) {
			A[x]=a;
			x++;
		}
		else
		{
			b++;
		} 
		cin >> a;
	}
	int sum = 0;
	if (b < M - 1) {
		sort(A, A+x);
		reverse(A, A+x);
		for (int i = 0; i < M - 1 - b; i++) {
			sum += N - A[i];
		}
	}
	cout << sum << endl;
	*/

	//合計時間
	/*
	int sum=0, n;
	for (int i = 0; i < 4; i++) {
	cin >> n;
	sum += n;
	}
	cout << sum / 60 << endl;
	cout << sum % 60 << endl;
	//平均点
	/*
	int P[5];
	int sum=0;
	for (int i = 0; i < 5; i++) {
	cin >> P[i];
	if (P[i] < 40) P[i] = 40;
	sum += P[i];
	}
	cout << sum / 5 << endl;
	*/
	//投票
	/*
	int N, M;
	cin >> N >> M;
	int A[1000], vote[1000];
	for (int i = 0; i < N; i++) {
	cin >> A[i];
	vote[i] = 0;
	}
	int b;
	for (int i = 0; i < M; i++) {
	cin >> b;
	for (int j = 0; j < N; j++) {
	if (A[j] <= b) {
	vote[j]++;
	break;
	}
	}
	}
	int temps = 0, ans;
	for (int i = 0; i < N; i++) {
	if (vote[i] > temps) {
	temps = vote[i];
	ans = i;
	}
	}
	cout << ans + 1 << endl;
	*/

	//2.すごろく	
	/*
	int n;
	cin >> n;
	int A, _A = 1;
	int k = 0;
	int A_count[100];
	A_count[0] = 1;
	for (int i = 0; i < n; i++)
	{
	cin >> A;
	if (A == 1)
	{
	if (A == _A)
	{
	A_count[k]++;
	}
	else
	{
	k++;
	A_count[k] = 2;
	}
	}
	_A = A;
	}
	sort(A_count, A_count + k + 1);
	cout << A_count[k] << endl;
	*/

	//タイムカード
	/*
	int t[2][3];
	int x[3][3];
	for (int n=0; n < 3; n++)
	{
	for (int i=0; i < 2; i++)
	for (int k=0; k < 3; k++)
	cin >> t[i][k];

	for (int m = 2; m >= 0; m--)
	{
	x[n][m] = t[1][m] - t[0][m];
	if (t[0][m] > t[1][m])
	{
	x[n][m] += 60;
	t[1][m - 1]--;
	}
	}
	}
	for (int n= 0; n < 3; n++)
	{
	cout << x[n][0] << ' ' << x[n][1] <<' '<< x[n][2] << endl;
	}
	*/



	return 0;
}

C++: #include<stdio.h>
int main(void)
{
	int i,j,z[5001],a,b[5001],c[5001],d[5001],e[5001],f[5001],x=0;
	scanf("%d",&a);
	x=(a*(a-1))/2;
	for(i=1;i<=x;i++){
		scanf("%d %d %d %d",&b[i],&c[i],&d[i],&e[i]);
	}
	for(i=1;i<=x+1;i++){
		f[i]=0;
		z[i]=1;
	}
	for(i=1;i<=x;i++){
		if(d[i]>e[i]){
			f[b[i]]+=3;
		}
		else if(d[i]<e[i]){
			f[c[i]]+=3;
		}
		else if(d[i]==e[i]){
			f[b[i]]++;
			f[c[i]]++;
		}
	}
	for(i=1;i<=a;i++){
		for(j=i+1;j<=a;j++){
			if(f[i]>f[j]){
				z[j]++;
			}
			if(f[i]<f[j]){
				z[i]++;
			}
		}
	}
	for(i=1;i<=a;i++){
		printf("%d\n",z[i]);
	}
	return 0;
}

C++: #include<iostream>
#include<string>
#include<algorithm>	
#include<cmath>
using namespace std;
int main() {
	int n, a, b, c, d; cin >> n; 
	int test[101] = { 0 }, uiop[101] = { 1 };
	for (int h = 0; h < n * (n - 1) / 2; h++) {
		cin >> a >> b >> c >> d;
		if (c > d) {
			test[a] += 3;
		}
		else if (c < d) {
			test[b] += 3;
		}
		else {
			test[a] += 1;
			test[b] += 1;
		}
	}
	for (int h = 1; h <= n; h++) {
		int num = 1;
		for (int i = 1; i <= n; i++) {
			if (test[h] < test[i]) {
				num++;
				uiop[h] = num;
			}
			if (num == 1) {
				uiop[h] = 1;
			}
		}
	}
	for (int h = 1; h <= n; h++) {
		cout << uiop[h] << endl;
	}
}