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 <vector>

using namespace std;

void solve()
{
	vector<int> left(4);
	vector<int> right(4);
	double sight_left, sight_right;
	while(cin >> sight_left >> sight_right)
	{
		if(sight_left >= 1.1)
		{
			++left[0];
		}
		else if(sight_left >= 0.6)
		{
			++left[1];
		}
		else if(sight_left >= 0.2)
		{
			++left[2];
		}
		else if(sight_left < 0.2)
		{
			++left[3];
		}

		if(sight_right >= 1.1)
		{
			++right[0];
		}
		else if(sight_right >= 0.6)
		{
			++right[1];
		}
		else if(sight_right >= 0.2)
		{
			++right[2];
		}
		else if(sight_right < 0.2)
		{
			++right[3];
		}
	}
	for(int i = 0; i < 4; ++i)
	{
		cout << left[i] << " " << right[i] << endl;
	}
}

int main()
{
	solve();
	return(0);
}

C++: #include <iostream>
#include <iomanip>
#include <cstdio>
#include <string>
#include <cstring>
#include <deque>
#include <list>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <algorithm>
#include <map>
#include <set>
#include <complex>
#include <cmath>
#include <limits>
#include <cfloat>
#include <climits>
#include <ctime>
#include <cassert>
#include <numeric>
#include <fstream>
#include <functional>
#include <bitset>

using namespace std;
#define int long long int
const int INF = 1001001001001001LL;
const int MOD = 1000000007;


signed main(){
    

    vector<int> l(4, 0);
    vector<int> r(4, 0);

    double a, b;
    while(cin >> a >> b){
        if(a >= 1.1) l[0]++;
        else if(a >= 0.6) l[1]++;
        else if(a >= 0.2) l[2]++;
        else l[3]++;


        if(b >= 1.1) r[0]++;
        else if(b >= 0.6) r[1]++;
        else if(b >= 0.2) r[2]++;
        else r[3]++;
    }

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

C++: #include <iostream>
#include <cstdio>
#include <string>

using namespace std;

int main()
{
    int data[8] = {0};
    double a, b;
    while (cin >> a >> b) {
        if (a >= 1.1) {
            data[0]++;
        } else if (a >= 0.6) {
            data[2]++;
        } else if (a >= 0.2) {
            data[4]++;
        } else {
            data[6]++;
        }
        if (b >= 1.1) {
            data[1]++;
        } else if (b >= 0.6) {
            data[3]++;
        } else if (b >= 0.2) {
            data[5]++;
        } else {
            data[7]++;
        }
    }
    for (int i = 0; i < 8; i++) {
        if (i%2) {
            cout << data[i] << endl;
        } else {
            cout << data[i] << " ";
        }
    }
    return 0;
}

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

int main(){
	double r,l,a=0,b=0,c=0,d=0,aa=0,bb=0,cc=0,dd=0;
	while(cin>>l>>r){
		if(l>=1.1)a++;
		else if(l>=0.6)b++;
		else if(l>=0.2)c++;
		else d++;
		if(r>=1.1)aa++;
		else if(r>=0.6)bb++;
		else if(r>=0.2)cc++;
		else dd++;
	}
	cout << a << " " << aa << endl << b << " " << bb << endl << c << " " << cc << endl << d << " " << dd << endl;
  return 0;
}

C++: #define _USE_MATH_DEFINES
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <queue>
#include <stack>
#include <limits>
#include <map>
#include <string>
#include <cstring>
#include <set>
#include <deque>

using namespace std;

typedef long long ll;
typedef pair<double,int> P;

static const double eps = 10e-9;

int main(){
	double a,b;
	double eyesight[] = {0.2,0.6,1.1};
	int lFreq[4]={0,0,0,0};
	int rFreq[4]={0,0,0,0};

	while(~scanf("%lf %lf",&a,&b)){
		int idx1 = 3;
		int idx2 = 3;
		for(int i=0;i<3;i++){
			if(a < eyesight[i]){
				idx1 = i;
				break;
			}
		}

		for(int i=0;i<3;i++){
			if(b < eyesight[i]){
				idx2 = i;
				break;
			}
		}

		lFreq[idx1]++;
		rFreq[idx2]++;
	}

	for(int i=3;i>=0;i--){
		printf("%d %d\n",lFreq[i],rFreq[i]);
	}
}

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

int main()
{
  double N,M;
  int l_A = 0; int l_B = 0; int l_C = 0; int l_D = 0;
  int r_A = 0; int r_B = 0; int r_C = 0; int r_D = 0;

  while(cin>>N>>M){

    if(N >= 1.1){
      ++l_A;
    }
    else if(N < 1.1 && N >= 0.6){
      ++l_B;
    }
    else if(N < 0.6 && N >= 0.2){
      ++l_C;
    }
    else{
      ++l_D;
    }

    if(M >= 1.1){
      ++r_A;
    }
    else if(M < 1.1 && M >= 0.6){
      ++r_B;
    }
    else if(M < 0.6 && M >= 0.2){
      ++r_C;
    }
    else{
      ++r_D;
    }
  }

  cout<<l_A<<" "<<r_A<<endl;
  cout<<l_B<<" "<<r_B<<endl;
  cout<<l_C<<" "<<r_C<<endl;
  cout<<l_D<<" "<<r_D<<endl;

  return 0;
}

C++: #include<stdio.h>
int main(void)
{
	int a1,a2,b1,b2,c1,c2,d1,d2;
	float l,r;
	a1=0,a2=0,b1=0,b2=0,c1=0,c2=0,d1=0,d2=0;
	while(scanf("%f %f",&l,&r)!=EOF){
		if(l<0.2) d1++;
		if(l>=0.2&&0.6>l) c1++;
		if(l>=0.6&&1.1>l) b1++;
		else a1++;
		if(r<0.2) d2++;
		if(r>=0.2&&0.6>r) c2++;
		if(r>=0.6&&1.1>r) b2++;
		else a2++;
	}
	printf("%d %d\n%d %d\n%d %d\n%d %d\n",a1,a2,b1,b2,c1,c2,d1,d2);
	return 0;
}

C++: #include<iostream>

using namespace std;

int main(){

	double r,l;
	int va[2][4]={0};

	while(cin>>r>>l){
		if(r>=1.1) va[0][0]++;
		else if(r>=0.6) va[0][1]++;
		else if(r>=0.2) va[0][2]++;
		else va[0][3]++;
		if(l>=1.1) va[1][0]++;
		else if(l>=0.6) va[1][1]++;
		else if(l>=0.2) va[1][2]++;
		else va[1][3]++;
	}
	for(int i=0;i<4;i++){
		cout<<va[1][i]<<" "<<va[0][i]<<endl;
	}
}

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

using namespace std;

typedef vector<int> VI;
typedef pair<int,int> PII;
typedef long long ll;

#define dump(x)  cerr << #x << " = " << (x) << endl
#define rep(i,n) for(int i=0;i<(n);i++)
#define ALL(a)  (a).begin(),(a).end()
#define PB push_back
#define sz size()

const double EPS = 1e-10;
const int INF = 100000000;

int main(){
    int l[10]={},r[10]={};
    double a,b;
    while(cin>>a>>b){
        if(a>=1.1)l[0]++;
        else if(a>=0.6)l[1]++;
        else if(a>=0.2)l[2]++;
        else l[3]++;

        if(b>=1.1)r[0]++;
        else if(b>=0.6)r[1]++;
        else if(b>=0.2)r[2]++;
        else r[3]++;

    }

    
    rep(i,4){
        cout<<l[i]<<" "<<r[i]<<endl;
    }
    return 0;
}

C++: // Tazoe

#include <iostream>
using namespace std;

int main()
{
	int AL = 0;
	int AR = 0;
	int BL = 0;
	int BR = 0;
	int CL = 0;
	int CR = 0;
	int DL = 0;
	int DR = 0;

	while(true){
		double L;
		cin >> L;

		if(cin.eof())
			break;

		double R;
		cin >> R;

		if(L>=1.1){
			AL++;
		}
		else if(L>=0.6){
			BL++;
		}
		else if(L>=0.2){
			CL++;
		}
		else{
			DL++;
		}

		if(R>=1.1){
			AR++;
		}
		else if(R>=0.6){
			BR++;
		}
		else if(R>=0.2){
			CR++;
		}
		else{
			DR++;
		}
	}

	cout << AL << ' ' << AR << '\n';
	cout << BL << ' ' << BR << '\n';
	cout << CL << ' ' << CR << '\n';
	cout << DL << ' ' << DR << '\n';

	return 0;
}