#include<bits/stdc++.h> using namespace std; int x,y,n,b,a[10000000]; int bs_max(int l,int r, int k) { int kq=0,mid; while(l<=r) { mid=(l+r)/2; if (a[mid]<=k) { if(a[mid]==k) kq=mid; l=mid+1; } else r=mid-1; } return kq; } int bs_min(int l,int r, int k) { int kq=0,mid; while(l<=r) { mid=(l+r)/2; if (a[mid]>=k) { if(a[mid]==k) kq=mid; r=mid-1; } else l=mid+1; } return kq; } void qs(int l,int r) { int i=l,j=r; int p=a[l+rand()%(r-l)]; while(i<=j) { while(p>a[i]) i++; while(p<a[j]) j--; if(i<=j) { swap(a[i],a[j]); i++; j--; } } if(i<r) qs(i,r); if(j>l) qs(l,j); } void nhap() { scanf("%d %d",&n,&b); for(int i=1;i<=n;i++) scanf("%d",&a[i]); } void giai() { if(n>1) qs(1,n); long long res=0; for(int j=1;j<=n;j++) { y=bs_max(1,j-1,b-a[j]); x=bs_min(1,j-1,b-a[j]); // cout << x << " " << y << " " << j << endl; if(x!=0) res=res+y-x+1; } printf("%lld",res); } int main() { freopen("bcfriend.inp","r",stdin); freopen("bcfriend.out","w",stdout); nhap(); giai(); }
* Chuyên dạy lập trình ONLINE cho học sinh THCS, THPT *.
Mọi giao lưu, trao đổi, xin liên hệ: Lê Quang Vinh - zalo: 037.803.8755.
Page: Lớp học Code Sky
Group FB1: Ôn thi HSG9 - THTB - TS10 chuyên tin
Group FB2: Học Scratch - Ôn thi Tin học trẻ bảng A
Thứ Hai, 9 tháng 5, 2022
BCFRIEND C++
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.