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++: /* 
 * File:   main.cpp
 * Author: freebsd
 *
 * Created on 2014/08/28, 10:07
 */

#include <cstdio>

using namespace std;

int main() {
    int Al = 0, Bl = 0, Cl = 0, Dl = 0;
    int Ar = 0, Br = 0, Cr = 0, Dr = 0;
    double templ = 0, tempr = 0;
    
    int i = 0;
    
    while (i != 40) {
        scanf("%f %f", &templ, &tempr);
    
        if(templ >= 1.1) {
            Al++;
        }else if (templ >= 0.6 && templ < 1.1) {
            Bl++;
        }else if (templ >= 0.2 && templ < 0.6) {
            Cl++;
        }else {
            Dl++;
        }
    
        if(tempr >= 1.1) {
            Ar++;
        }else if (tempr >= 0.6 && tempr < 1.1) {
            Br++;
        }else if (tempr >= 0.2 && tempr < 0.6) {
            Cr++;
        }else {
            Dr++;
        }
        
        i++; 
    }
    
    printf("%d %d\n", Al, Ar);
    printf("%d %d\n", Bl, Br);
    printf("%d %d\n", Cl, Cr);
    printf("%d %d\n", Dl, Dr);
    
    return 0;
}

C++: #include <bits/stdc++.h>

#define loop(v, f, l) for(int v = (f), v##_ = (l); v < v##_; ++v)

using namespace std;

typedef long long int lint;
static inline int in(){ int x; scanf("%d", &x); return (x); }
static inline lint inl(){ lint x; scanf("%lld", &x); return (x); }

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

int main()
{
	int leftRank[4] = {0};
	int rightRank[4] = {0};
	float left, right;
	while( scanf("%f%f", &left, &right) != EOF )
	{
		leftRank[getRank(left)]++;
		rightRank[getRank(right)]++;
	}
	for(int i = 0; i < 4; i++)
	{
		printf("%d %d\n", leftRank[i], rightRank[i]);
	}
	return (0);
}

C++: include <iostream>
#include <stdio.h>

using namespace std;
 int an[4][2],n,i,j;
 int main() {
  double ey[2];
  while(cin >> ey[0] >> ey[1]) {
	  for (i=0;i<2;i++) {
		  if (ey[i]>=1.1) j=0;
		  if (ey[i]>=0.6 && ey[i]<1.1) j=1;
		  if (ey[i]>=0.2 && ey[i]<0.6) j=2;
		  if (ey[i]<0.2) j=3;
		  an[j][i]++;
	  }
   }
  for (i=0;i<4;i++) cout << an[i][0] << ' ' << an[i][1] << endl;
  return 0;
 }

C++: #include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<math.h>
#include<string>
#include<string.h>
#include<stack>
#include<queue>
#include<vector>
#include<utility>
#include<set>
#include<map>
#include<stdlib.h>
#include<iomanip>

using namespace std;

#define ll long long
#define ld long double
#define EPS 0.0000000001
#define INF 1e9
#define rep(i,n) for(i=0;i<n;i++)
#define loop(i,a,n) for(i=a;i<n;i++)
#define all(in) in.begin(),in.end()
#define shosu(x) fixed<<setprecision(x)

typedef vector<int> vi;
typedef pair<int,int> pii;

int main(void) {
  int i,j;
  double a[2];
  vector<vi> n(4,vi(2,0));
  while(scanf("%lf %lf",&a[0],&a[1])!=EOF){
    rep(i,2)
      if(a[i]>=1.1)n[0][i]++;
      else if(a[i]>=0.6)n[1][i]++;
      else if(a[i]>=0.2)n[2][i]++;
      else n[3][i]++;
  }
  rep(i,4)
    cout<<n[i][0]<<" "<<n[i][1]<<endl;
}

C++: #include <cstdio>

int main(){
	double l, r;
	int lA, lB, lC, lD;
	int rA, rB, rC, rD;
	
	lA = lB = lC = lD = 0;
	rA = rB = rC = rD = 0;
	
	while(scanf("%lf %lf", &l, &r) != EOF){
		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++;
		}
	}
	
	printf("%d %d\n%d %d\n%d %d\n%d %d\n", lA, rA, lB, rB, lC, rC, lD, rD);
	
	return 0;
}

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

int main(){

  int r[4] = {0},l[4] = {0};
  double a,b;

  while(cin >> a >> b){

    if(a >= 1.1) r[0]++;
    else if(a >= 0.6) r[1]++;
    else if(a >= 0.2) r[2]++;
    else r[3]++;

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

  }

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

}

C++: #include<iostream>
int i,v[2][4];main(){float a;for(;std::cin>>a;) v[i^=1][(a<0.2)+(a<0.6)+(a<1.1)]++;for(;i<4;)std::cout<<v[1][i]<<" "<<v[0][i++]<<"\n";return 0;}

C++: #include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>

using namespace std;

inline int toInt(string s) {int v; istringstream sin(s);sin>>v;return v;}
template<class T> inline string toString(T x) {ostringstream sout;sout<<x;return sout.str();}

template<class T> inline T sqr(T x) {return x*x;}

typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef pair<int, int> PII;
typedef long long LL;
typedef unsigned long long ULL;

#define ALL(a)  (a).begin(),(a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define PB push_back
#define MP make_pair
#define SZ(a) int((a).size())
#define EACH(i,c) for(typeof((c).begin()) i=(c).begin(); i!=(c).end(); ++i)
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define SORT(c) sort((c).begin(),(c).end())

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

const double EPS = 1e-10;
const double PI  = acos(-1.0);

#define CLR(a) memset((a), 0 ,sizeof(a))

#define dump(x)  cerr << #x << " = " << (x) << endl;
#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl;

int dx[8] = {-1, 0, 1, 0, -1, -1, 1, 1};
int dy[8] = {0, -1, 0, 1, -1, 1, -1, 1};

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

  int i = 0;
  while(cin >> eye) {
    if(eye >= 1.1) record[0][i%2]++;
    else if(eye >= 0.6) record[1][i%2]++;
    else if(eye >= 0.2) record[2][i%2]++;
    else record[3][i%2]++;
    i++;
  }
  REP(i, 4) cout << record[i][0] << ' ' << record[i][1] << endl;
}

C++: #include<stdio.h>
int main()
{
	double l,r;
	int al=0,bl=0,cl=0,dl=0,ar=0,br=0,cr=0,dr=0;
	while(scanf("%lf%lf",&l,&r)!=EOF){
		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++;
		}
	}
	printf("%d %d\n%d %d\n%d %d\n%d %d\n",al,ar,bl,br,cl,cr,dl,dr);
	return 0;
}

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