Go: package main

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

var scanner= bufio.NewScanner(os.Stdin)

func main() {
	result := make([][]int, 4)
	for i :=range result {
		result[i] = make([]int, 2)
	}
	for scanner.Scan() {
		buf := strings.Split(scanner.Text(), " ")
		l, _ := strconv.ParseFloat(buf[0], 64)
		r, _ := strconv.ParseFloat(buf[1], 64)
		if 1.1 <= l {
			result[0][0]++
		} else if 0.6 <= l && l < 1.1 {
			result[1][0]++
		} else if 0.2 <= l && l < 0.6 {
			result[2][0]++
		} else {
			result[3][0]++
		}
		if 1.1 <= r {
			result[0][1]++
		} else if 0.6 <= r && r < 1.1 {
			result[1][1]++
		} else if 0.2 <= r && r < 0.6 {
			result[2][1]++
		} else {
			result[3][1]++
		}
	}
	ans := make([][]string, 4)
	for i :=range ans {
		ans[i] = make([]string, 2)
	}
	for i := range result {
		for j := range result[i] {
			ans[i][j] = strconv.Itoa(result[i][j])
		}
	}
	for i := 0; i < 4; i++ {
		fmt.Println(strings.Join(ans[i], " "))
	}
}

C++: #include <iostream>
#include <map>

using namespace std;

int main() {
    map<char, int> ls, rs;
    double l, r;
    while (cin >> l >> r) {
        if (1.1 <= l) ls['A']++;
        else if (0.6 <= l && l < 1.1) ls['B']++;
        else if (0.2 <= l && l < 0.6) ls['C']++;
        else ls['D']++;

        if (1.1 <= r) rs['A']++;
        else if (0.6 <= r && r < 1.1) rs['B']++;
        else if (0.2 <= r && r < 0.6) rs['C']++;
        else rs['D']++;
    }

    for (char c = 'A'; c <= 'D'; c++) {
        cout << ls[c] << ' ' << rs[c] << endl;
    }
    return 0;
}

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

const double EPS = 1e-9;

int n;
int ls[4], rs[4];

int main()
{
    double l,r;
    for(int i = 0; i < 4; i++) 
        ls[i] = rs[i] = 0;

    n = 0;
    while(cin >> l >> r) {
        if(l + EPS > 1.1) ls[0]++;
        else if(l + EPS > 0.6 && l < 1.1) ls[1]++;
        else if(l + EPS > 0.2 && l < 0.6) ls[2]++;
        else ls[3]++;

        if(r + EPS > 1.1) rs[0]++;
        else if(r + EPS > 0.6 && r < 1.1) rs[1]++;
        else if(r + EPS > 0.2 && r < 0.6) rs[2]++;
        else rs[3]++;
        n++;
    }
    
    for(int i = 0; i < 4; i++) 
        cout << ls[i] << " " << rs[i] << endl;

}

C++: #include<stdio.h>
int main(void)
{
	double h,m;
	int cMA,cHA;
	int cMB,cHB;
	int cMC,cHC;
	int cMD,cHD;
	cMA=0;
	cHA=0;
	cMB=0;
	cHB=0;
	cMC=0;
	cHC=0;
	cMD=0;
	cHD=0;
		while(scanf("%lf %lf",&h,&m)!=EOF){
			if(h>=1.1){
				cHA++;
			}
			else if(0.6<=h){
				cHB++;
			}
			else if(0.2<=h){
				cHC++;
			}
			else{
				cHD++;
			}
			if(m>=1.1){
				cMA++;
			}
			else if(0.6<=m m<1.1){
				cMB++;
			}
			else if(0.2<=m && m<0.6){
				cMC++;
			}
			else if(0.2>m){
				cMD++;
			}
		}
	printf("%d %d\n%d %d\n%d %d\n%d %d\n",cHA,cMA,cHB,cMB,cHC,cMC,cHD,cMD);
	return 0;
}

C++: #include <stdio.h>
#include <iostream>

using namespace std;

void check(double c, int k[][2], int d) {
	if (c >= 1.1) {
		k[0][d]++;
	} else if (c >= 0.6) {
		k[1][d]++;
	} else if (c >= 0.2) {
		k[2][d]++;
	} else {
		k[3][d]++;
	}
	return;
}

int main() {
	double a,b;
	int hyou[4][2] = {0};

	while (cin >> a >> b) {
		check(a,hyou,0);
		check(b,hyou,1);
	}

	for (int i = 0; i < 4; i++) {
		cout << hyou[i][0] << " " << hyou[i][1] << endl;
	}
	return 0;
}

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

#define gcu getchar_unlocked
#define pcu putchar_unlocked
#define _T template <typename T>
#define _HT template <typename H, typename... T>
#define _il inline
#define _in _il int in
#define _sc _il bool scan
_T T in(int c){T n=0;bool m=false;if(c=='-')m=true,c=gcu();
	do{n=10*n+(c-'0'),c=gcu();}while(c>='0');return m?-n:n;} //&&c<='9'
_in() {return in<int>(gcu());}
_T T scan(T &n){int c=gcu();return c==EOF?false:(n=in<T>(c),true);}
_sc(char &c){c=gcu();gcu();return c!=EOF;}
#ifdef _GLIBCXX_STRING
_sc(string &s){int c;s="";
	for(;;){c=gcu();if(c=='\n'||c==' ')return true;else if(c==EOF)return false;s+=c;}}
#endif
_HT _sc(H &h, T&&... t){return scan(h)&&scan(t...);}
#define _vo _il void out
#define _vl _il void outl
_vo(const char *s){while(*s)pcu(*s++);}
_vo(char c){pcu(c);}
#ifdef _GLIBCXX_STRING
_vo(string s){for(char c:s)pcu(c);}
#endif
_T _vo(T n){static char buf[20];char *p=buf;
	if(n<0)pcu('-'),n*=-1;if(!n)*p++='0';else while(n)*p++=n%10+'0',n/=10;
	while (p!=buf)pcu(*--p);}
_vl(){out('\n');}
#ifdef _GLIBCXX_VECTOR
_T _vo(vector<T> &v){for(T &x:v)out(&x == &v[0]?"":" "),out(x);outl();}
#endif
_HT _vo(H&& h, T&&... t){out(h);out(move(t)...);}
template <typename... T> _vl(T&&... t){out(move(t)...);outl();}

int test(double a) {
	return a >= 1.1 ? 0 : a >= 0.6 ? 1 : a >= 0.2 ? 2 : 3;
}

int main() {
	double l, r;
	vector<int> L(4), R(4);
	while (scanf("%lf %lf", &l, &r) != EOF) {
		L[test(l)]++;
		R[test(r)]++;
	}
	for (int i = 0; i < 4; i++)
		outl(L[i], ' ', R[i]);
}

C++: #include <iostream>

using namespace std;

int main()
{
    int ch[2][4] = {0};
    double lim[4] = {1.1, 0.6, 0.2, 0.1};
    double l, r;

    while (cin >> l >> r) {
        for (int i = 0; i < 4; i++) 
            if (l >= lim[i]) {
                ch[0][i]++;
                break;
            }
        for (int i = 0; i < 4; i++) 
            if (r >= lim[i]) {
                ch[1][i]++;
                break;
            }
    }

    for (int i = 0; i < 4; i++)
        cout << ch[0][i] << " " << ch[1][i] << endl;

    return 0;
}

C++: #include <bits/stdc++.h>

using namespace std;

typedef vector<int> vi;
typedef vector<vi> vii;
typedef vector<string> vs;
typedef vector<bool> vb;
typedef vector<vb> vbb;
typedef pair<int, int> pii;
typedef long long ll;
typedef unsigned long long ull;

#define all(a)  (a).begin(),(a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define pb push_back
#define mp make_pair

#define loop(i,a,b) for(int i=(a);i<ull(b);++i)
#define rep(i,n) loop(i,0,n)

const double eps = 1e-10;
const double pi  = acos(-1.0);
const double inf = (int)1e8;

int main(){
    double n, m;
    vector<pair<int, int> > v(4);
    while(cin >> n >> m){
        if(1.1 <= n) v[0].first++;
        else if(0.6 <= n && n < 1.1) v[1].first++;
        else if(0.2 <= n && n < 0.6) v[2].first++;
        else  v[3].first++;
        if(1.1 <= m) v[0].second++;
        else if(1.6 <= m && m < 1.1) v[1].second++;
        else if(0.2 <= m && m < 0.6) v[2].second++;
        else  v[3].second++;
    }

    rep(i, 4){
        cout << v[i].first << " " << v[i].second << endl;
    }
}

C++: #include<stdio.h>
int main(void)
{
    float a,c;
	int b[8],i;
	for(i=0;i<8;i++) b[i]=0;
	while(scanf("%f %f",&a,&c)!=EOF){
		if(a>=1.1){
			b[0]=b[0]+1;
		}
		else if(a>=0.6){
			b[1]=b[1]+1;
		}
		else if(a>=0.2){
			b[2]=b[2]+1;
		}
		else if(c<0.2){
			b[3]=b[3]+1;
		}
		if(c>=1.1){
			b[4]=b[4]+1;
		}
		else if(c>=0.6){
			b[5]=b[5]+1;
		}
		else if(c>=0.2){
			b[6]=b[6]+1;
		}
		else if(c<0.2){
			b[7]=b[7]+1;
		}
	}
	for(i=0;i<4;i++){
	    printf("%d %d\n",b[i],b[i+4]);
	}
	return 0;
}

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

int main()
{	
	double e[2];
	int a[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };

	while (cin >> e[0] >> e[1]) {
		int j = 0;

		for (int i = 0; i < 2; i++) {
			if (e[i] >= 1.1)
				a[j]++;
			else if (e[i] >= 0.6 && e[i] < 1.1)
				a[j + 1]++;
			else if (e[i] >= 0.2 && e[i] < 0.6)
				a[j + 2]++;
			else if (e[i] < 0.2)
				a[j + 3]++;

			j += 4;
		}
	}

	for (int i = 0; i < 4; i++)
		cout << a[i] << " " << a[i + 4] << endl;

	return 0;
}

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

int main()
{
  vector<int> ans(8, 0);
  vector<double> eye(2);
  while (cin >> eye[0] >> eye[1]) {
    for (int i = 0; i < 2; ++i) {
      if (eye[i] >= 1.1)
	++ans[0+i];
      else if (eye[i] >= 0.6)
	++ans[2+i];
      else if (eye[i] >= 0.2)
	++ans[4+i];
      else
	++ans[6+i];
    }
  }

  for (int i = 0; i < 8; i += 2)
    cout << ans[i] << " " << ans[i+1] << endl;

  return 0;
}