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<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<cassert>
#include<iostream>
#include<sstream>
#include<string>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<utility>
#include<numeric>
#include<algorithm>
#include<bitset>
#include<complex>

using namespace std;

typedef long long Int;
typedef vector<int> vint;
typedef pair<int,int> pint;
#define mp make_pair

template<class T> void pv(T a, T b) { for (T i = a; i != b; ++i) cout << *i << " "; cout << endl; }
template<class T> void chmin(T &t, T f) { if (t > f) t = f; }
template<class T> void chmax(T &t, T f) { if (t < f) t = f; }
int in() { int x; scanf("%d", &x); return x; }

int shiryoku[4][2];

int main() {
	double left,right;
	while(cin>>left>>right){
		if(left<0.2)shiryoku[3][0]++;
		else if(left<0.6)shiryoku[2][0]++;
		else if(left<1.1)shiryoku[1][0]++;
		else shiryoku[0][0]++;
		if(right<0.2)shiryoku[3][1]++;
		else if(right<0.6)shiryoku[2][1]++;
		else if(right<1.1)shiryoku[1][1]++;
		else shiryoku[0][1]++;
	}
	cout<<shiryoku[0][0]<<" "<<shiryoku[0][1]<<endl;
	cout<<shiryoku[1][0]<<" "<<shiryoku[1][1]<<endl;
	cout<<shiryoku[2][0]<<" "<<shiryoku[2][1]<<endl;
	cout<<shiryoku[3][0]<<" "<<shiryoku[3][1]<<endl;
	return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
int main() {

    double l, r;
    long long num[4][2] = {};
    while (scanf("%lf%lf",&l, &r) != EOF) {
        if (l >= 1.1) {
            num[0][0]++;
        } else if (l >= 0.6) {
            num[1][0]++;
        } else if (l >= 0.2) {
            num[2][0]++;
        } else {
            num[3][0]++;
        }
        if (r >= 1.1) {
            num[0][1]++;
        } else if (r >= 0.6) {
            num[1][1]++;
        } else if (r >= 0.2) {
            num[2][1]++;
        } else {
            num[3][1]++;
        }
    }

    printf("%lld %lld\n", num[0][0], num[0][1]);
    printf("%lld %lld\n", num[1][0], num[1][1]);
    printf("%lld %lld\n", num[2][0], num[2][1]);
    printf("%lld %lld\n", num[3][0], num[3][1]);

}

C++: #include<bits/stdc++.h>
using namespace std;
using Int = long long;
signed main(){
  double l,r;
  int ans[2][4]={};
  while(cin>>l>>r){
    if(l>=1.09) ans[0][0]++;
    else if(l>=0.59) ans[0][1]++;
    else if(l>=0.19) ans[0][2]++;
    else  ans[0][3]++;

    
    if(r>=1.09) ans[1][0]++;
    else if(r>=0.59) ans[1][1]++;
    else if(r>=0.19) ans[1][2]++;
    else  ans[1][3]++;
  }
  for(int i=0;i<4;i++){
    cout<<ans[0][i]<<" "<<ans[1][i]<<endl;
  }
  return 0;
}

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

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

int main(){
  double L, R;
  int l[4] = {0};
  int r[4] = {0};

  while(cin >> L >> R){
    l[getResult(L)]++;
    r[getResult(R)]++;
  }

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

C++: #pragma GCC optimize "-O3"
#pragma GCC target ("avx")
#define _USE_MATH_DEFINES
#include<bits/stdc++.h>
#define int long long
#define rep(i,n) for(int i=0;i<n;++i)
#define vi vector<int>
#define vvi vector<vi>
#define pb push_back
#define pi pair<int,int>
#define vp vector<pair<int,int>>
#define mp make_pair
#define all(v) (v).begin(),(v).end()
#define fi first
#define se second
#define MEMSET(a) memset(a,0,sizeof(a))
#define inf (1ll<<60)
#define SORT(v) sort(all(v))
#define RSORT(v) sort(all(v),greater<int>())
#define SPEED ios::sync_with_stdio(false);cin.tie(0);cout<<fixed<<setprecision(12)
signed gcd(int a, int b){return b?gcd(b,a%b):a;}
signed lcm(int a, int b){return a*b/gcd(a,b);}
bool isDigit(char c){return '0'<=c&&c<='9';}
template<typename T> void remove(std::vector<T>& vector,unsigned int index){vector.erase(vector.begin()+index);}
//priority_queue<int, vi, greater<int> > que;//æ˜‡é †

using namespace std;

const int mod=1e9+7;


signed main(){
    SPEED;
    vi a(2,0),b(2,0),c(2,0),d(2,0);
    double l,r;
    while(scanf("%lf%lf",&l,&r) != EOF)
    {
        if(1.1<=l)++a[0];
        else if(0.6<=l&&l<1.1)++b[0];
        else if(0.2<=l&&l<0.6)++c[0];
        else ++d[0];

        if(1.1<=r)++a[1];
        else if(0.6<=r&&r<1.1)++b[1];
        else if(0.2<=r&&r<0.6)++c[1];
        else ++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;
}

C++: #include <stdio.h>

int main()
{
  double m,n;

  int aleft=0,aright=0,bleft=0,bright=0;
  int cleft=0,cright=0,dleft=0,dright=0;


  while( scanf("%lf %lf",&m,&n) != EOF ){
    if(m>=1.1){
      aleft++;
    }else if(m>=0.6){
      bleft++;
    }else if(m>=0.2){
      cleft++;
    }else{
      dleft++;
    }
    if(n>=1.1){
      aright++;
    }else if(n>=0.6){
      bright++;
    }else if(n>=0.2){
      cright++;
    }else{
      dright++;
    }
  }

  printf("%d %d\n",aleft, aright);
  printf("%d %d\n",bleft, bright);
  printf("%d %d\n",cleft, cright);
  printf("%d %d\n",dleft, dright);
}

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

int main() {
  double l, r;

  int al = 0, ar = 0;
  int bl = 0, br = 0;
  int cl = 0, cr = 0;
  int dl = 0, dr = 0;
  while(cin >> l >> 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 << endl;
  cout << bl << " " << br << endl;
  cout << cl << " " << cr << endl;
  cout << dl << " " << dr << endl;
  return 0;
}

C++: #include<iostream>
#include<string>
#include<vector>
#include<cstdio>
#include<sstream>
#include<cmath>
#include<algorithm>
#include<map>
#include<functional>
#include<queue>
#include<stack>
#include<set>
using namespace std;
int stoi(string x){stringstream ss;ss<<x;int tmp;ss>>tmp;return tmp;}
string itos(int x){stringstream ss;ss<<x;return ss.str();}
int main(){
	int ta[4][2]={{0},{0}};
	double a,b;
	while(cin>>a>>b){
		if(a>=1.1)ta[0][0]++;
		else if(a>=0.6)ta[1][0]++;
		else if(a>=0.2)ta[2][0]++;
		else ta[3][0]++;
		
		if(b>=1.1)ta[0][1]++;
		else if(b>=0.6)ta[1][1]++;
		else if(b>=0.2)ta[2][1]++;
		else ta[3][1]++;
	}
		for(int i=0;i<4;i++)cout<<ta[i][0]<<" "<<ta[i][1]<<endl;
		return 0;
}

C++: #include<iostream>

using namespace std;

int main(){

  int sum[8];
  double r, l;

  for(int i = 0; i < 8; i++) sum[i] = 0;

  while(cin >> r >> l){
    if(r >= 1.1) sum[0]++;
    else if(r >= 0.6)sum[2]++;
    else if(r >= 0.2)sum[4]++;
    else sum[6]++;

    if(l >= 1.1) sum[1]++;
    else if(l >= 0.6)sum[3]++;
    else if(l >= 0.2)sum[5]++;
    else sum[7]++;

  }

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

  return 0;
}