fork(3) download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. long long a[4000],b[4000],c[4000],d[4000];
  5. long long ab[4000*4000],cd[4000*4000];
  6.  
  7. int compare (const void * a, const void * b)
  8. {
  9. return ( *(int*)a - *(int*)b );
  10. }
  11.  
  12. int binary_search(long long key,long long n)
  13. {
  14. int low,high,mid;
  15. low=0;
  16. high=n-1;
  17. mid = low+((high-low)/2);
  18. while(low<=high){
  19. mid = low+((high-low)/2);
  20. if(cd[mid]==key){
  21. //printf("%lld\n",key);
  22. return 1;
  23. }
  24. else if(cd[mid]<key)
  25. low = mid+1;
  26. else
  27. high = mid-1;
  28. }
  29. return 0;
  30. }
  31.  
  32. int main()
  33. {
  34. int n,i,j,bol;
  35. long long count;
  36. scanf("%d ",&n);
  37. for(i=0;i<n;i++){
  38. scanf("%lld %lld %lld %lld ", &a[i], &b[i], &c[i], &d[i]);
  39. }
  40. count=0;
  41. for(i=0;i<n;i++){
  42. for(j=0;j<n;j++){
  43. ab[count]=a[i]+b[j];
  44. count++;
  45. }
  46. }
  47. count=0;
  48. for(i=0;i<n;i++){
  49. for(j=0;j<n;j++){
  50. cd[count]=c[i]+d[j];
  51. count++;
  52. }
  53. }
  54. count = 0;
  55. qsort(ab,n*n,sizeof(long long),compare);
  56. qsort(cd,n*n,sizeof(long long),compare);
  57. /*for(i=0;i<n*n;i++){
  58.   printf("%lld %lld\n",ab[i],cd[i]);
  59.   }*/
  60. for(i=0;i<n*n;i++){
  61. bol=binary_search(-ab[i],n*n);
  62. if(bol==1)
  63. count++;
  64. }
  65. printf("%lld",count);
  66. return 0;
  67. }
  68.  
Runtime error #stdin #stdout 0s 252544KB
stdin
Standard input is empty
stdout
Standard output is empty