Đếm đoạn


Submit solution

Points: 1 (partial)
Time limit: 1.0s
Memory limit: 125M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Cho n điểm trên mặt phẳng toạ độ hai chiều B1(x1,y1) … Bn(xn,yn), và một đường tròn tâm A(xA,yA) bán kính R. Bạn hãy đếm xem có bao nhiêu đoạn thẳng có hai đầu mút nằm trong hoặc thuộc hình tròn

Input:

  • Dòng đầu là hai số nguyên dương gồm số điểm N (1<=N<=10^5) và bán kính R (1<=R<=1000)

  • Dòng tiếp theo là toạ độ điểm A(xA,yA) (-1000<=xA, yA<=1000)

  • N dòng tiếp theo là toạ độ của N điểm là cặp số nguyên xi yi (-1000<=xi, yi<=1000)

Output

  • Một dòng duy nhất là số cặp điểm

Ví dụ

Input

5 3
0 0
-10 10
1 -2
3 0
100 -1
1 1

Output

3

Giải thích: Có 3 đoạn thoả mãn là B2 B3 hoặc B2 B5 hoặc B3 B5

tichpx

Comments


  • 1
    huydoan_cntt6k61  commented on Nov. 17, 2021, 6:31 p.m. edit 3
    #include<bits/stdc++.h>
        using namespace std;
        long kc(long x1, long y1, long x2, long y2)
        {
            return pow((x1-x2),2)+pow((y1-y2),2);
        } 
        int main(){
            long n, r;
            cin>>n>>r;
            long a, b;
            cin>>a>>b;
            long x[n+5], y[n+5], dem=0;
            for(int i=1;i<=n;i++)
                cin>>x[i]>>y[i];
            for(int i=1;i<=n;i++)
                    if(kc(x[i],y[i],a,b)<=r*r)
                        dem++;
            cout<<dem*(dem-1)/2;
        }

  • -1
    minyoongi  commented on Oct. 17, 2020, 9:28 a.m. edited

    hi