Nộp bài | Các bài nộp | Làm tốt nhất | Về danh sách bài |
P132SUME - SUM2 E - Vườn táo |
Gia đình Tí được cấp một mảnh đất hình tam giác ở ven sông. Khu này có rất nhiều cây táo. Tí rất thích ăn táo, nhưng Tí chỉ được hái táo ở những cây thuộc gia đình mình.
Nhiệm vụ của bạn là hãy tính diện tích mảnh đất của gia đình Tí và đếm xem có bao nhiêu cây táo nằm trong khu vực này. (Cây táo nào nằm ở hàng rào thì coi là thuộc về gia đình Tí luôn).
Input
Ba dòng đầu tiên chứa tọa độ các đỉnh của tam giác.
Dòng tiếp theo là số cây táo N (1 ≤ N ≤ 100).
N dòng tiếp theo, mỗi dòng chứa tọa độ của một cây táo.
Tất cả các tọa độ đều là số nguyên dương nhỏ hơn 1000.
Output
Dòng đầu tiên là diện tích mảnh đất nhà Tí, độ chính xác là một chữ số sau dấu thập phân.
Dòng thứ hai là số cây táo thuộc về gia đình Tí.
Example
Test 1:
Input:
1 1
5 1
3 3
4
3 1
3 2
3 3
3 4
Output:
4.0
3
Test 2:
Input:
3 2
5 4
1 6
3
2 4
3 5
4 3
Output:
6.0
3
Test 3:
Input:
2 6
5 1
7 8
5
1 4
3 5
6 4
6 5
4 7
Output:
15.5
2
Được gửi lên bởi: | adm |
Ngày: | 2013-07-19 |
Thời gian chạy: | 1s |
Giới hạn mã nguồn: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Ngôn ngữ cho phép: | ASM32-GCC ASM32 MAWK BC C CSHARP C++ 4.3.2 CPP CPP14 COFFEE LISP sbcl DART FORTH GO JAVA JS-RHINO JS-MONKEY KTLN OCT PAS-GPC PAS-FPC PERL PERL6 PROLOG PYTHON PYTHON3 PY_NBC R RACKET SQLITE SWIFT UNLAMBDA |
hide comments
2018-05-13 16:03:41
-.-. sau bao lần vật lộn với các thuật toán trên trời dưới biển thì em đã AC với thuật toán sơ khai nhất mà ngay lần đầu em sử dụng.-.-. thật trớ trêu.:< |
|
2018-05-13 04:24:38
Dùng ct này : s=1/2*abs((xb-xa)*(yc-ya)-(xc-xa)*(yb-ya)) :v Nhớ ép kiểu số thực |
|
2018-02-14 04:40:37
Chú ý kiểu dữ liệu nhé :( |
|
2014-09-04 09:05:08 Flappybird
ko biet bo test co TH gi dac biet nua ko ma van kq sai :( #include<stdio.h> #include<iostream> #include<cmath> using namespace std; float x1,y4,x2,y2,x3,y3,n,a[100][5]; int k=0; float s; int ktra3(float x, float y){ float a=((x-x1)*(y-y3)-(x-x3)*(y-y4)); float b=((x2-x1)*(y2-y3)-(x2-x3)*(y2-y4)); if(a>=0&&b>=0) return 1; if(a<=0&&b<=0) return 1; else return 0; } int ktra2(float x, float y){ float a=((x-x2)*(y-y3)-(x-x3)*(y-y2)); float b=((x1-x2)*(y4-y3)-(x1-x3)*(y4-y2)); if(a>=0&&b>=0) return 1; if(a<=0&&b<=0) return 1; else return 0; } int ktra1(float x, float y){ float a=((x-x1)*(y-y2)-(x-x2)*(y-y4)); float b=((x3-x1)*(y3-y2)-(x3-x2)*(y3-y4)); if(a>=0&&b>=0) return 1; if(a<=0&&b<=0) return 1; else return 0; } int main(){ cin>>x1>>y4>>x2>>y2>>x3>>y3>>n; for(int i=1;i<=n;i++) cin>>a[i][1]>>a[i][2]; s=((y4-y2)*(x3-x2)-(x1-x2)*(y3-y2))/2; printf("%.1f",fabs(s));cout<<endl; for(int i=1;i<=n;i++) if(ktra1(a[i][1],a[i][2])&&ktra2(a[i][1],a[i][2])&&ktra3(a[i][1],a[i][2])) k++; cout<<k; return 0; } |