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 <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

int main(){
	
	double l, r;
	
	int a[4], b[4];
	
	for(int i = 0; i < 4; i++){
		a[i] = 0;
		b[i] = 0;
	}
	
	while(scanf("%lf %lf", &l, &r) != EOF){
		if(l >= 1.1){
			a[0]++;
		}else if(l >= 0.6){
			a[1]++;
		}else if(l >= 0.2){
			a[2]++;
		}else{
			a[3]++;
		}
		if(r >= 1.1){
			b[0]++;
		}else if(r >= 0.6){
			b[1]++;
		}else if(r >= 0.2){
			b[2]++;
		}else{
			b[3]++;
		}
	}
	
	for(int i = 0; i < 4; i++){
		printf("%d %d\n", a[i], b[i]);
	}
	
	return 0;
}

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

int level(double v){
    return v >= 1.1 ? 0 : (v >= 0.6 ? 1 : (v >= 0.2 ? 2 : 3));
}

int main(){
    int la[4], ra[4];
    double l, r;
    fill(la, la+4, 0);
    fill(ra, ra+4, 0);
    while(scanf("%lf%lf", &l, &r) != EOF){
        la[ level(l) ]++;
        ra[ level(r) ]++;
    }
    for(int x = 0; x < 4; x++) printf("%d %d\n", la[x], ra[x]);
    return 0;
}

C++: #include<stdio.h>
int main(void)
{
    float a,c;
	int b[8],i;
	for(i=0;i<8;i++) b[i]=0;
	while(scanf("%f %f",&a,&c)!=EOF){
		if(a>=1.1) b[0]=b[0]+1;
		else if(a>=0.6) b[1]=b[1]+1;
		else if(a>=0.2) b[2]=b[2]+1;
		else if(c<0.2) b[3]=b[3]+1;
		if(c>=1.1) b[4]=b[4]+1;
		else if(c>=0.6) b[5]=b[5]+1;
		else if(c>=0.2) b[6]=b[6]+1;
		else if(c<0.2) b[7]=b[7]+1;
	}
	for(i=0;i<4;i++){
	    printf("%d %d\n",b[i],b[i+4]);
	}
	return 0;
}

C++: #include<iostream>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<utility>
#include<vector>
#include<cmath>
#include<cstdio>
#define loop(i,a,b) for(int i=a;i<b;i++) 
#define rep(i,a) loop(i,0,a)
#define pb push_back
#define mp make_pair
#define it ::iterator
#define all(in) in.begin(),in.end()
const double PI=acos(-1);
const double ESP=1e-10;
using namespace std;
int main(){
  double tmp[4]={0.2,0.6,1.1,3};
  int out[2][4]={0};
  double in[2];
  while(cin>>in[0]>>in[1])
    rep(j,2)rep(i,4)if(in[j]<tmp[i]){out[j][i]++;break;}

  for(int i=3;i>=0;i--)cout<<out[0][i]<<" "<<out[1][i]<<endl;

}

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

int main()
{
	double test[4][2] = {0}, eye[2] = {0};

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

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

int main() {
    double r, l;
    vector<int> sum_r(4), sum_l(4);
    while (cin >> l >> r) {
        
        auto add = [](double x, vector<int> &vec) {
            if (x >= 1.1) vec[0]++;
            else if (x >= 0.6) vec[1]++;
            else if (x >= 0.2) vec[2]++;
            else vec[3]++;
        };

        add(l, sum_l);
        add(r, sum_r);

    }

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

    return 0;
}

C++: #include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define RFOR(i,a,b) for(int i=(b) - 1;i>=(a);i--)
#define REP(i,n) for(int i=0;i<(n);i++)
#define RREP(i,n) for(int i=n-1;i>=0;i--)

#define PB push_back
#define INF INT_MAX/3
#define ALL(a) (a).begin(),(a).end()
#define CLR(a) memset(a,0,sizeof(a))

typedef long long int ll;

using namespace std;

int main(){
    int la,ra,lb,rb,lc,rc,ld,rd;
    double t;
    la = 0;
    ra = 0;
    lb = 0;
    rb = 0;
    lc = 0;
    rc = 0;
    ld = 0;
    rd = 0;
    while(cin >> t){
	if(t >= 1.1) la++;
	else if( t >= 0.6) lb++;
	else if(t >= 0.2) lc++;
	else ld++;
	cin >> t;
	if(t >= 1.1) ra++;
	else if( t >= 0.6) rb++;
	else if(t >= 0.2) rc++;
	else rd++;
    }
    printf("%d %d\n",la,ra);
    printf("%d %d\n",lb,rb);
    printf("%d %d\n",lc,rc);
    printf("%d %d\n",ld,rd);
    return 0;
}

C++: #include<stdio.h>
int main(void)
{
    float a,c;
	int b[8],i;
	while(scanf("%f %f",&a,&c)!=EOF){
		if(a>=1.1){
			b[0]=b[0]+1;
		}
		else if(a>=0.6){
			b[1]=b[1]+1;
		}
		else if(a>=0.2){
			b[2]=b[2]+1;
		}
		else{
			b[3]=b[3]+1;
		}
		if(a>=1.1){
			b[4]=b[4]+1;
		}
		else if(a>=0.6){
			b[5]=b[5]+1;
		}
		else if(a>=0.2){
			b[6]=b[6]+1;
		}
		else{
			b[7]=b[7]+1;
		}
	}
	for(i=0;i<4;i++){
	    printf("%d %d\n",b[i],b[i+4]);
	}
	return 0;
}

C++: #include <iostream>
#include <algorithm>
#include <cassert>
#include <cctype>
#include <complex>
#include <cstdio>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;

double l[4],r[4],a,b;

int main(){
	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;
}

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(x, 0.0, sizeof(x));  
  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>
using namespace std;
double t[4]={0.2,0.6,1.1,9999999.9};
double a,b;
int ans[4][2];
int main(){
  for(int i=0;i<4;i++)for(int j=0;j<2;j++)ans[i][j]=0;
  while(cin>>a>>b){
    for(int i=0;i<4;i++){
      if(a<t[i]){
	ans[3-i][0]++;
	break;
      }
    }
    for(int i=0;i<4;i++){
      if(b<t[i]){
	ans[3-i][1]++;
	break;
      }
    }
  }
  for(int i=0;i<4;i++){
    cout<<ans[i][0]<<' '<<ans[i][1]<<endl;
  }
  return 0;
}

C++: #define _USE_MATH_DEFINES
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <climits>
#include <cfloat>
#include <ctime>
#include <cassert>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <complex>
#include <stack>
#include <queue>
#include <numeric>
#include <list>
#include <iomanip>
#include <iterator>
 
using namespace std;
 
typedef long long ll;
typedef pair<int,int> Pii;
typedef pair<ll,ll> Pll;
 
#define FOR(i,n) for(int i = 0; i < (n); i++)
#define sz(c) ((int)c.size())

typedef unsigned long long ull;
const int INF = (int)1e8;


int main(){
	double f[] = {0.2,0.6,1.1};
	double a,b;
	vector<int> v1(4),v2(4);
	while(cin>>a>>b){
		v1[upper_bound(f,f+3,a) - f]++;
		v2[upper_bound(f,f+3,b) - f]++;
	}
	FOR(i,4){
		printf("%d %d",v1[3-i],v2[3-i]);
		if(i!=3)puts("");
	}

	return 0;
}