/** GOKURI */ #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FNAME "circle2.txt" #define cin fin typedef complex dcomp; static const int NUM = 4000; static const double D = 10.0 / NUM; double solve( const vector& cs ) { vector< vector > pixel( NUM, vector(NUM) ); // TODO for (int i = 0; i < cs.size(); ++i ) { int x = int(cs[i].real() / D + 0.5); int y = int(cs[i].imag() / D + 0.5); for (int j = x - NUM / 10; j != x + NUM / 10; ++j) { double xx = j * D - cs[i].real(); int dy = int(sqrt(1 - xx * xx) / D + 0.5); // cout << dy << endl; for (int k = 0; k < dy; ++k) { pixel[j][y + k] = 1; pixel[j][y - k] = 1; } if((pixel[j][y + dy] += .7) > 1.0) pixel[j][y + dy] = 1.0; if((pixel[j][y - dy] += .7) > 1.0) pixel[j][y - dy] = 1.0; //pixel[j][y - dy] += .4; } } double cnt = 0; for(int i=0; i!=NUM; ++i) for(int j=0; j!=NUM; ++j) { cnt += pixel[i][j]; } // cout << cnt << endl; return double(cnt)*D*D; } int main() { ifstream fin(FNAME); if(!fin) return -1; for(int n; cin>>n,n; ) { vector cs; while(n--) { double x,y; cin >> x >> y; cs.push_back( dcomp(x,y) ); } cout << setiosflags(ios::fixed) << setprecision(2) << solve(cs) << endl; } return 0; }