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>
using namespace std;
int main(void)
{
	double date[41][2];
	int num=0;
	while(cin >> date[num][0] >> date[num][1]){
		num++;
	}
	double judge[5] = {0,0.2,0.6,1.1,100};
	int out[4][2] = {0};
	for(int i=0;i<num;i++){
		for(int j=0;j<2;j++){
			for(int k=0;k<4;k++){
				if(judge[k] <= date[i][j] && date[i][j] < judge[k+1]){
					out[k][j]++;
					break;
				}
			}
		}
	}
		for(int i=4; i>=0; i--){
			cout << out[i][0] << " " << out[i][1] << endl;
		}
	return 0;
}

C++: #include<iostream>
using namespace std;
/*
	expression : ( 1 <= x <= 3) is evaluated follow the steps below.
    0. (x is Integer, and value is 2.)
	1. (1 <= x) <= 3
	2. (true ) <= 3
	3. (1) <= 3 // In C++, true : Boolean is considered 1 : Integer
	4. true
	
	if you want to say  "x is greater than 2, and less than 3",
	you should write this::
	( 2 <= x && x <= 3)
	
	2.In this problem, beause test case is so weak, but
	Generally, when you compare double type integer, 
	you should use eps which means very small value.
	e.g 
	double a = 1.0;
	double eps = 0.000000000000001
	print (a == 1.0) <--- false
	print (abs(a - 1.0)  > eps)  <---- true;
	
*/
int main(){
    double x,y;
    int Aleft=0,Bleft=0,Cleft=0,Dleft=0;
    int Aright=0,Bright=0,Cright=0,Dright=0;
    
    while(cin >> x >> y){
    	
    if(x>=1.1){Aleft++;}
    else if(0.6<=x && x<1.1){Bleft++;}
    else if(0.2<=x && x<0.6){Cleft++;}
    else{	Dleft++; }
    
    if(y>=1.1){Aright++;}
    else if(0.6<=y && y<1.1){Bright++;}
    else if(0.2<=y && y<0.6){Cright++;}
    else{Dright++;}
    }

    cout << Aleft << " " << Aright << endl;
    cout << Bleft << " " << Bright << endl;
    cout << Cleft << " " << Cright << endl;
    cout << Dleft << " " << Dright << endl;

    return 0;
}

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){
				cMB++;
			}
			else if(0.2<=m){
				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 <iostream>

using namespace std;

int l[4], r[4];

int main()
{
    int a, b;
    
    while(cin >> a >> b)
    {
        l[a < 0.2 ? 3 : a < 0.6 ? 2 : a < 1.1 ? 1 : 0]++;
        r[b < 0.2 ? 3 : b < 0.6 ? 2 : b < 1.1 ? 1 : 0]++;
    }
    
    for(int i = 0; i < 4; i++)
    {
        cout << l[i] << ' ' << r[i];
    }
    
    return 0;
}

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

int rank(double x) {
	if (1.1 <= x) return 0;
	if (0.6 <= x) return 1; 
	if (0.2 <= x) return 2;
	return 3;
}

int main() {
	int resutls[4][2];
	double a, b;
	while (cin >> a >> b) {
		resutls[rank(a)][0]++;
		resutls[rank(a)][1]++;
	}
	for (int i = 0; i < 4; i++) {
		cout << resutls[i][0] << ' ' << resutls[i][1] << endl;
	}
	return 0;
}

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

int main() {
  int LA = 0;
  int LB = 0;
  int LC = 0;
  int LD = 0;
  int RA = 0;
  int RB = 0;
  int RC = 0;
  int RD = 0;

  float l, r;
  while(cin >> l) {
    cin >> r;
    if(l >= 1.1) LA++;
    else if(l >= 0.6) LB++;
    else if(l >= 0.2) LC++;
    else LD++;
    if(r >= 1.1) RA++;
    else if(r >= 0.6) RB++;
    else if(r >= 0.2) RC++;
    else RD++;
  }
  cout << LA << ' ' << RA << '\n'
       << LB << ' ' << RB << '\n'
       << LC << ' ' << RC << '\n'
       << LD << ' ' << RD << endl;
  return 0;
}

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

int main() {
	double a, b;
	int left[4];
	int right[4];

	for (int i = 0; i < 4; i++) {
		left[i] = 0;
		right[i] = 0;
	}

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

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

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

C++: #include<iostream>
#include<iomanip>
#include<algorithm>
#include<array>
#include<bitset>
#include<cassert>
#include<cctype>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<functional>
#include<limits>
#include<list>
#include<map>
#include<numeric>
#include<set>
#include<stack>
#include<string>
#include<sstream>
#include<unordered_map>
#include<queue>
#include<vector>
using namespace std;

//#define int long long
using ll = long long;
using ull = unsigned long long;
using pii = pair<int, int>;

#define rep(i,a,b) for(int i=(a);i<(b);i++)
#define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define all(a) (a).begin(),(a).end()
#define dump(o) {cerr<<#o<<" "<<o<<endl;}
#define dumpc(o) {cerr<<#o; for(auto &e:(o))cerr<<" "<<e;cerr<<endl;}
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3fLL
const int MOD = 1e9 + 7;

signed main() {
	int L[4] = {}, R[4] = {};
	for (double l, r; cin >> l >> r;) {
		if (l >= 1.1)L[0]++;
		else if (l >= 0.6)L[1]++;
		else if (l >= 0.2)L[2]++;
		else if (l < 0.2)L[3]++;
		if (r >= 1.1)R[0]++;
		else if (r >= 0.6)R[1]++;
		else if (r >= 0.2)R[2]++;
		else if (r < 0.2)R[3]++;
	}
	rep(i, 0, 4) {
		cout << L[i] << " " << R[i] << endl;
	}
	return 0;
}

C++: #include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
    double a,b;
    int a1=0,a2=0,b1=0,b2=0,c1=0,c2=0,d1=0,d2=0;
    while(cin>>a>>b)
    {
        if(a<0.2)d1++;
        else if(0.2<=a&&a<0.6)c1++;
        else if(0.6<=a&&a<1.1)b1++;
        else if(1.1<=a)a1++;
        if(b<0.2)d2++;
        else if(0.2<=b&&b<0.6)c2++;
        else if(0.6<=b&&b<1.1)b2++;
        else if(1.1<=b)a2++;
    }
    cout<<a1<<" "<<a2<<endl;
    cout<<b1<<" "<<b2<<endl;
    cout<<c1<<" "<<c2<<endl;
    cout<<d1<<" "<<d2<<endl;
    return 0;
}

C++: #include<stdio.h>
int main(void)
{
	double m,n;
	int cnt[4]={0},cnt1[4]={0},i;
	while (scanf("%lf %lf",&m,&n)!=EOF){
		if(m>=1.1) cnt[0]++;
		else if(m>=0.6) cnt[1]++;
		else if(m>=0.2) cnt[2]++;
		else cnt[3]++;
		if(n>=1.1) cnt1[0]++;
		else if(n>=0.6) cnt1[1]++;
		else if(n>=0.2) cnt1[2]++;
		else cnt1[3]++;
	}
	for(i=0;i<=3;i++) printf("%d %d\n",cnt[i],cnt1[i]);
	return 0;
}

C++: #include<iostream>

#define A 1.1
#define B 0.6
#define C 0.2

using namespace std;

int main(){
	int rc[4]={0},lc[4]={0},count=0;
	double r,l;
	
	while(cin>>r>>l){
		if(r>=A){
			rc[0]++;
		}
		else if(r>=B && r<A){
			rc[1]++;
		}
		else if(r>=C && r<B){
			rc[2]++;
		}
		else if(r<C){
			rc[3]++;
		}
		
		if(l>=A){
			lc[0]++;
		}
		else if(l>=B && l<A){
			lc[1]++;
		}
		else if(l>=C && l<B){
			lc[2]++;
		}
		else if(l<C){
			lc[3]++;
		}
		
		count++;
	}
	for(int i=0;i<4;i++){
		cout<<rc[i]<<" "<<lc[i]<<endl;
	}
}