All pastes #1521641 Raw Edit

fcuhcakki

public cpp v1 · immutable
#1521641 ·published 2009-08-08 07:39 UTC
rendered paste body
#include<stdio.h>#include<stdlib.h>#include <vector>using namespace std;#define RANGE 201int main() {    //FILE *fp;    //fp = fopen("o.in", "r");    int t = 0;    int n = 0;    //fscanf(fp,"%d", &t);    scanf("%d", &t);    while (t > 0) {        int ans = 0;        int X[RANGE][RANGE] = {0};        int Y[RANGE][RANGE] = {0};        int minX[RANGE] = {0};        int maxX[RANGE] = {0};        int minY[RANGE] = {0};        int maxY[RANGE] = {0};        int countX[RANGE] = {0};        int countY[RANGE] = {0};        int grstX[RANGE] = {0};        int grstY[RANGE] = {0};        vector<int> grX, grY;        //fscanf(fp,"%d", &n);        scanf("%d", &n);                for (int p = 0; p < n; p++) {            int x = 0, y = 0;            //fscanf(fp,"%d%d", &x, &y);            scanf("%d%d", &x, &y);            x = x + 100;            y = y + 100;            if (countX[x] == 0) {                minX[x] = y;                maxX[x] = y;            } else {                minX[x] = (minX[x] > y ? y : minX[x]);                maxX[x] = (maxX[x] < y ? y : maxX[x]);            }            if (countY[y] == 0) {                minY[y] = x;                maxY[y] = x;            } else {                minY[y] = (minY[y] > x ? x : minY[y]);                maxY[y] = (maxY[y] < x ? x : maxY[y]);            }            if (X[x][y] == 0) {                countX[x]++;            }            if (Y[y][x] == 0) {                countY[y]++;            }            X[x][y]++;            Y[y][x]++;            if ((countX[x] >= 2) && grstX[x] == 0) {                grstX[x] = 1;                grX.push_back(x);//new Integer(x));            }            if ((countY[y] >= 2) && grstY[y] == 0) {                grstY[y] = 1;                grY.push_back(y); //new Integer(y));            }        }        for (int k = 0; k< grX.size(); k++) {            int ex = grX[k];            // System.out.println("Group  X   " + ex);            for (int j = 0; j<grY.size(); j++) {                int ey = grY[j];                //System.out.println("    Group  Y   " + ey);                if (X[ex][ey] > 0) {                    continue;                }                if ((minY[ey] < ex) && (ex < maxY[ey]) && (ey < maxX[ex]) && (minX[ex] < ey)) {                    //System.out.println(ex + "  ,  " + ey);                    ans++;                }            }        }        printf("%d\n", ans);        t--;    }}