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;

#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define REP(i, n) for (int i = 0; i < (n); i++)

int s[8];
int main()
{

  REP(i, 40){
    double a, b;
    cin >> a >> b;
    if (a >= 1.1) s[0]++;
    else if (a >= 0.6) s[1]++;
    else if (a >= 0.2) s[2]++;
    else s[3]++;
    if (b >= 1.1) s[4]++;
    else if (b >= 0.6) s[5]++;
    else if (b >= 0.2) s[6]++;
    else s[7]++;
  }
  REP(i, 4) cout << s[i] << " " << s[i + 4] << endl;
}

C++: #include<iostream>
main(){int l[4][2]={0},i=0;for(double a;std::cin>>a;i++)a<0.2?l[3][i%2]++:(a<0.6?l[2][i%2]++:(a<1.1?l[1][i%2]++:l[0][i%2]++));for(int i=0;i<4;i++)std::cout<<l[i][0]<<" "<<l[i][1]<<"\n";}

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>
using namespace std;
int main()
{
	int a = 0, b = 0, c = 0, d = 0, A = 0, B = 0, C = 0, D = 0;
	double tmp, tmp2;
	while (cin >> tmp >> tmp2)
	{	
		if (tmp >= 1.1)
			a++;
		else if (0.6 <= tmp)
			b++;
		else if (0.2 <= tmp)
			c++;
		else
			d++;

		if (tmp2 >= 1.1)
			A++;
		else if (0.6 <= tmp2)
			B++;
		else if (0.2 <= tmp2)
			C++;
		else
			D++;
	}
	cout << a << " " << A << endl << b << " " << B << endl << c << " " << C << endl << d << " " << D << endl;
}

C++: #include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<int, int>;

int main() {
    double l, r;
    int la = 0, ra = 0, lb = 0, rb = 0, lc = 0, rc = 0, ld = 0, rd = 0;
    while (cin >> l >> 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;
}

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

#define rep(i, n) for(int i = 0; i < n; i++)

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

  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<count;i++){
		cout<<rc[i]<<" "<<lc[i]<<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] << endl;
    cout << B[0] << " " << B[1] << endl;
    cout << C[0] << " " << C[1] << endl;
    cout << D[0] << " " << D[1] << endl;
    
    return 0;
}

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

const double eps = 0.001;

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

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

C++: #include <iostream>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
int main(){
	double a,b;
	int c[2][4]={0};
	while(cin >> a >> b){
		c[0][a>=1.1?0:a>=0.6?1:a>=0.2?2:3]++;
		c[1][b>=1.1?0:b>=0.6?1:b>=0.2?2:3]++;
	}
	rep(i,4)
		cout << c[0][i] << " " << c[1][i] << endl;
}

C++: // clang-format off
#include <bits/stdc++.h>
#define int long long
#define main signed main()
// #define main int main()
#define loop(i, a, n) for (int i = (a); i < (n); i++)
#define rep(i, n) loop(i, 0, n)
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define prec(n) fixed << setprecision(n)
#define stlice(from, to) substr(from, (to) - (from) + 1)
#define pb push_back
#define mp make_pair
#define mt make_tuple
#define fi first
#define se second
using namespace std;
using pii = pair<int, int>;
using vi = vector<int>;
using vd = vector<double>;
using vc = vector<char>;
using vb = vector<bool>;
using vs = vector<string>;
using vpii = vector<pii>;
using vvi = vector<vi>;
using vvb = vector<vb>;
using vvpii = vector<vpii>;
template<typename A> using fn = function<A>;
constexpr int INF = sizeof(int) == sizeof(long long) ? 1000000000000000000LL : 1000000000;
constexpr int MOD = 1000000007;
constexpr double PI = acos(-1);
template<typename A, typename B> bool cmin(A &a, const B &b) { return a > b ? (a = b, true) : false; }
template<typename A, typename B> bool cmax(A &a, const B &b) { return a < b ? (a = b, true) : false; }
constexpr bool odd(const int &n) { return n & 1; }
constexpr bool even(const int &n) { return !odd(n); }
void solve();
main { solve(); return 0; }
// clang-format on

int f(double x) {
  return (x < 0.2) + (x < 0.6) + (x < 1.1);
}

void solve() {
  double l, r;
  vi lt(4), rt(4);
  while (cin >> l >> r) lt[f(l)]++, rt[f(r)]++;
  rep(i, 4) cout << lt[i] << ' ' << rt[i] << endl;
}