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 <bits/stdc++.h>
using namespace std;
int main(void){
    double left,right;
    int leftA,leftB,leftC,leftD,rightA,rightB,rightC,rightD;
    leftA=0;
    leftB=0;
    leftC=0;
    leftD=0;
    rightA=0;
    rightB=0;
    rightC=0;
    rightD=0;
    while (cin>>left>>right) {
        if (left>=1.1) {
            leftA++;
        } else if (left>=0.6 && left<1.1) {
            leftB++;
        } else if (left>=0.2 && left<0.6) {
            leftC++;
        } else if (left<0.2) {
            leftD++;
        }
        if (right>=1.1) {
            rightA++;
        } else if (right>=0.6 && right<1.1) {
            rightB++;
        } else if (right>=0.2 && right<0.6) {
            rightC++;
        } else if (right<0.2) {
            rightD++;
        }
    }
    cout<<leftA<<" "<<rightA<<endl;
    cout<<leftB<<" "<<rightB<<endl;
    cout<<leftC<<" "<<rightC<<endl;
    cout<<leftD<<" "<<rightD<<endl;
}

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

typedef vector <int> VI;

int check( double s )
{
	if ( s >= 1.1 ) return 0;
	else if ( s >= 0.6 ) return 1;
	else if ( s >= 0.2 ) return 2;
	else if ( s < 0.2 ) return 3;
	return 4;
}

int main( void )
{
	VI lefts(5,0), rights(5,0);
	double left, right;
	while ( cin >> left >> right )
	{
		int l = check( left );
		lefts[l]++;
		int r = check( right );
		rights[r]++;
	}
	for ( int i = 0; i < 4; i++ ) cout << lefts[i] << " " << rights[i] << endl;
	return 0;
}

C++: #include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <utility>
#include <stack>
#include <queue>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>

using namespace std;

#define rep(i,n) for(int i=0; i<(n); i++)
#define repc(i,s,e) for(int i=(s); i<(e); i++)
#define pb(n) push_back((n))
#define mp(n,m) make_pair((n),(m))
#define all(r) r.begin(),r.end()
#define fi first
#define se second

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef vector<ll> vl;
typedef vector<vl> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;




int main() {
	int a[4][2] = {};
	double b[2];
	while (cin >> b[0] >> b[1]) {
		rep(i, 2) {
			if (b[i] >= 1.1)a[0][i]++;
			else if (b[i] >= 0.6)a[1][i]++;
			else if (b[i] >= 0.2)a[2][i]++;
			else a[3][i]++;
		}
	}
	rep(i, 4) {
		cout << a[i][0] << " " << a[i][1] << endl;
	}
}

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

double leye, reye;
int A[2], B[2], C[2], D[2];

int main() {
    for (int i = 0; i < 40; i++) { 
            cin >> leye;
            if (leye >= 1.1) A[0]++;
            else if (leye >= 0.6 && leye < 1.1) B[0]++;
            else if (leye >= 0.2 && leye < 0.6) C[0]++;
            else if (leye < 0.2) D[0]++;
            
            cin >> reye;
            if (reye >= 1.1) A[1]++;
            else if (reye >= 0.6 && reye < 1.1) B[1]++;
            else if (reye >= 0.2 && reye < 0.6) C[1]++;
            else if (reye < 0.2) D[1]++;
    }
    
    cout << A[0] << " " << A[1];
    cout << B[0] << " " << B[1];
    cout << C[0] << " " << C[1];
    cout << D[0] << " " << D[1];
    
    return 0;
}

C++: #include<iostream>
using namespace std;
 
int main(){
    double l, r;
    int l_cnt[4] = {}, r_cnt[4] = {};
    while(cin >> l >> r){
        if(l >= 1.1) l_cnt[0]++;
        else if(l >= 0.6) l_cnt[1]++;
        else if(l >= 0.2) l_cnt[2]++;
        else l_cnt[3]++;
 
        if(r >= 1.1) r_cnt[0]++;
        else if(r >= 0.6) r_cnt[1]++;
        else if(r >= 0.2) r_cnt[2]++;
        else r_cnt[3]++;
    }
 
    for(int i = 0; i < 4; i++){
        cout << l_cnt[i] << " " << r_cnt[i] << endl;
    }
 
}

C++: #include <iostream>

int getClass(float e)
{
	if (e >= 1.1) return 0;
	else if (e >= 0.6) return 1;
	else if (e >= 0.2) return 2;
	else return 3;
}

int main()
{
	int L[4] = {0,0,0,0}, R[4] = {0,0,0,0};
	float l, r;
	while (std::cin >> l >> r) {
		L[getClass(l)]++; R[getClass(r)]++;
	}
	for (int i=0; i<4; i++) std::cout << L[i] << " " << R[i] << std::endl;
	return 0;
}

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

void main() {
	int right_a = 0, right_b = 0, right_c = 0, right_d = 0;
	int left_a = 0, left_b = 0, left_c = 0, left_d = 0;
	double right_eye, left_eye;
	while (cin >> left_eye >> right_eye) {
		if (left_eye >= 1.1)left_a++;
		else if (left_eye >= 0.6&&left_eye < 1.1)left_b++;
		else if (left_eye >= 0.2&&left_eye < 0.6)left_c++;
		else if (left_eye < 0.2)left_d++;
		if (right_eye >= 1.1)right_a++;
		else if (right_eye >= 0.6&&right_eye < 1.1)right_b++;
		else if (right_eye >= 0.2&&right_eye < 0.6)right_c++;
		else if (right_eye < 0.2)right_d++;
	}
	cout << left_a << ' ' << right_a << endl;
	cout << left_b << ' ' << right_b << endl;
	cout << left_c << ' ' << right_c << endl;
	cout << left_d << ' ' << right_d << endl;
}

C++: #include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <string>
#include <algorithm>

using namespace std;

int main (int argc, char *argv[]) {
    double lhs, rhs;
    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 (cin>>lhs>>rhs, lhs||rhs) {
        if (lhs >= 1.1) al++;
        if (rhs >= 1.1) ar++;
        if (1.1 > lhs && lhs >= 0.6) bl++;
        if (1.1 > rhs && rhs >= 0.6) br++;
        if (0.6 > lhs && lhs >= 0.2) cl++;
        if (0.6 > rhs && rhs >= 0.2) cr++;
        if (0.2 > lhs && lhs >= 0.1) dl++;
        if (0.2 > rhs && rhs >= 0.1) dr++;
    }
    cout<<al<<" "<<ar<<endl;
    cout<<bl<<" "<<br<<endl;
    cout<<cl<<" "<<cr<<endl;
    cout<<dl<<" "<<dr<<endl;
    return 0;
}

C++: #include<iostream>
#include<cstdio>
using namespace std;
int main(void)
{
	double l[40]={0},r[40]={0};int A=0,A2=0,B=0,B2=0,C=0,C2=0,D=0,D2=0;
	for(int i=0;i<40;i++)
	{
		scanf("%lf %lf",&l[i],&r[i]);
		if(l[i]>=1.1)
		{
			A=A+1;
		}
		else if(l[i]>=0.6)
		{
			B=B+1;
		}
		else if(l[i]>=0.2)
		{
			C=C+1;
		}
		else
		{
			D=D+1;
		}
		if(r[i]>=1.1)
		{
			A2=A2+1;
		}
		else if(r[i]>=0.6)
		{
			B2=B2+1;
		}
		else if(r[i]>=0.2)
		{
			C2=C2+1;
		}
		else
		{
			D2=D2+1;
		}
	}
	printf("%d %d\n%d %d\n%d %d\n%d %d\n",A,A2,B,B2,C,C2,D,D2);
	return 0;
}

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

int la, lb, lc, ld, ra, rb, rc, rd;
double l[40], r[40];
int n = 0;

int main() {
  
  for(int i=0; cin >> l[i] >> r[i]; i++, n++);
  
  for(int i=0; i<n; i++) {
    if( 1.1 <= l[i] ) la ++;
    else if( 0.6 <= l[i] ) lb ++;
    else if( 0.2 <= l[i] ) lc ++;
    else if( l[i] < 0.2  ) ld ++;
    if( 1.1 <= r[i] ) ra ++;
    else if( 0.6 <= r[i] ) rb ++;
    else if( 0.2 <= r[i] ) rc ++;
    else if( r[i] < 0.2  ) rd ++;
  }
    cout << la << " " << ra << endl;
    cout << lb << " " << rb << endl;
    cout << lc << " " << rc << endl;
    cout << ld << " " << rd << endl;
  
  return 0;
}