Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define PB push_back
- #define ZERO (1e-10)
- #define INF (1<<29)
- #define CL(A,I) (memset(A,I,sizeof(A)))
- #define DEB printf("DEB!\n");
- #define D(X) cout<<" "<<#X": "<<X<<endl;
- #define EQ(A,B) (A+ZERO>B&&A-ZERO<B)
- typedef long long ll;
- typedef long double ld;
- typedef pair<ll,ll> pll;
- typedef vector<int> vi;
- typedef pair<int,int> ii;
- typedef vector<ii> vii;
- #define IN(n) int n;scanf("%d",&n);
- #define FOR(i, m, n) for (int i(m); i < n; i++)
- #define REP(i, n) FOR(i, 0, n)
- #define F(n) REP(i, n)
- #define FF(n) REP(j, n)
- #define FT(m, n) FOR(k, m, n)
- #define aa first
- #define bb second
- void ga(int N,int *A){F(N)scanf("%d",A+i);}
- #define MX (1024)
- struct pt{
- ll x,y;
- pt operator-(pt r){return {x-r.x,y-r.y};}
- pt operator+(pt r){return {x+r.x,y+r.y};}
- bool operator<(const pt&r)const{return EQ(x,r.x)?y<r.y:x<r.x;}//< by X
- bool operator==(const pt&r)const{return EQ(x,r.x)&&EQ(y,r.y);};
- double dst(pt r={0,0}){return sqrt((x-r.x)*(x-r.x)+(y-r.y)*(y-r.y));}
- ll XP(pt b){return x*b.y-y*b.x;}
- double DT(pt&b){return x*b.x+y*b.y;}
- bool gt(){return ~scanf("%lld%lld",&x,&y);}
- }p[MX*2];
- double XX(pt&a,pt&b,pt&c){return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);}
- bool cp(pt a,pt b){return EQ(a.y,b.y)?a.x<b.x:a.y<b.y;}//< by Y
- ll TR(pt&a,pt&b,pt&c){return abs(a.XP(b)+b.XP(c)+c.XP(a));}
- ll N,K,S;
- int main(void){
- IN(_)F(_){
- scanf("%lld%lld",&N,&K),assert(N<MX),K<<=1,S=0;
- F(N)p[i].gt();
- F(N)FT(i+1,N)FOR(j,k+1,N)S+=TR(p[i],p[j],p[k])<=K;
- printf("%lld\n",S);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment