Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
二分水题,开2000ms干嘛呢,47ms水果#include <iostream> #include <stdio.h> using namespace std; int U[5100], L[5100]; int S, T, N; bool isZuo(int x, int y, int num){ return S*(U[num]-x) > y*(U[num]-L[num]); } int main() { while(1){ scanf("%d", &N); if(N == 0) break; int M, x1, y1, x2, y2; scanf("%d%d%d%d%d", &M, &x1, &y1, &x2, &y2); int temp = y1; y1 = y2; y2 = temp; S = y2 - y1, T = x2- x1; //cout << S << " " << T << endl; U[0] = 0, L[0] = 0; U[N+1] = L[N+1] = T; for(int i = 1; i <= N; i++){ scanf("%d%d", &L[i], &U[i]); L[i] -= x1, U[i] -= x1; } int bin[5100] = {0}; for(int i = 0; i < M; i++){ int x , y; scanf("%d%d", &x, &y); x -= x1, y -= y1; int zuo = 0, you = N+1; while(you-zuo > 1){ int mid = (zuo+you)/2; if(isZuo(x, y, mid)){ you = mid; } else zuo = mid; } //printf("%d: %d\n", i, zuo); bin[zuo]++; } for(int i = 0; i <= N; i++){ printf("%d: %d\n", i, bin[i]); } printf("\n"); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator