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 |
Re:哪里错了 wa疯了In Reply To:哪里错了 wa疯了 Posted by:ziqilau at 2008-09-03 16:11:53 修改了 还是wa #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> typedef struct INTERVAL { double l, r; }INTERVAL; INTERVAL p[1000]; int cmp(const void* p1, const void* p2) { double x = ((INTERVAL*)p1)->l, y = ((INTERVAL*)p2)->l; if(x >= y) return 1; else return -1; } int main() { int n, d, i, x[1000], y[1000], flag = 0, t = 0, num; double tmp, right; while(scanf("%d%d", &n, &d) && !(n == 0 && d == 0)) { t++; for(i = 0; i < n; i++) { scanf("%d%d", x + i, y + i); if(y[i] > d) { flag = 1; } tmp = sqrt(d * d - y[i] * y[i]); p[i].l = x[i] - tmp; p[i].r = x[i] + tmp; } if(flag) {printf("Case %d: %d\n", t, -1); continue;} if(d <= 0) { printf("Case %d: %d\n", t, -1); continue;} qsort(p, n, sizeof(INTERVAL), cmp); right = p[0].r; num = 1; for(i = 1; i < n; i++) { if(right < p[i].l) num++, right = p[i].r; else if(p[i].r < right) right = p[i].r; } printf("Case %d: %d\n", t, num); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator