Thứ Tư, 27 tháng 4, 2022

TGV874 C++

#include <bits/stdc++.h>
using namespace std;
int n,a[100005],b[100005],c[100005];

void nhap()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        a[i]=a[i]*a[i];
    }
    for(int i=1;i<=n;i++)
    {
        cin>>b[i];
        b[i]=b[i]*b[i];
    }
    for(int i=1;i<=n;i++)
    {
        cin>>c[i];
        c[i]=c[i]*c[i];
    }
}

int chat_max(int l,int r,int x)
{
    int kq=0;int mid;
      while(l<=r)
    {

          mid=(l+r)/2;
          //cout<<"-"<<l<<" "<<r<<" "<<mid<<endl;
          if(a[mid]<=x)
        {
            if(a[mid]==x)kq=mid;
            l=mid+1;
        }
        else r=mid-1;
    }
    return kq;
}

int chat_min(int l,int r,int x)
{
     int kq=0,mid;
      while(l<=r)
    {
          mid=(l+r)/2;
           if(a[mid]>=x)
        {
            if(a[mid]==x) kq=mid;
            r=mid-1;
        }
          else l=mid+1;
    }
    return kq;
}


void giai()
{
    int x,y;
    sort(a+1,a+1+n);
   // for(int i=1;i<=n;i++) cout<<a[i]<<" ";
   // cout<<endl;
  //  cout<<endl;
    int res=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
          //  cout<<b[i]<<" "<<c[j]<<endl;
            x=chat_min(1,n,b[i]+c[j]);
            y=chat_max(1,n,b[i]+c[j]);
          //  cout<<x<<" "<<y<<endl;
            if(x>0) res=res+y-x+1;
            x=chat_min(1,n,abs(b[i]-c[j]));
            y=chat_max(1,n,abs(b[i]-c[j]));
            if(x>0) res=res+y-x+1;
        }
    cout<<res;

}

int main()
{
    freopen("tgv874.inp","r",stdin);
    freopen("tgv874.out","w",stdout);
    nhap();
    giai();
}



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.