重名大师 2023-04-06 23:22 采纳率: 94.4%
浏览 10
已结题

递增三元组一直有两个运行超时,应该怎么优化呀,只会c还不会c++

题目链接:
https://www.lanqiao.cn/problems/172/learning/?first_category_id=1&sort=students_count&second_category_id=3

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int n;
 long long a[100000],b[100000],c[100000];
  int i,j,k,l=0;
  scanf("%d",&n);
  for(i=0;i<n;i++)
  {
    scanf("%lld",&a[i]);
  }
  for(i=0;i<n;i++)
  {
    scanf("%lld",&b[i]);
  }
  for(i=0;i<n;i++)
  {
    scanf("%lld",&c[i]);
  }
  for(i=0;i<n;i++)
  {
    for(j=0;j<n;j++)
    {
      if(a[i]<b[j])
      {
        for(k=0;k<n;k++)
        {
          if(b[j]<c[k])
          {
            l++;
          }
        }
      }
    }
  }
  printf("%d",l);
  return 0;

}

  • 写回答

2条回答 默认 最新

  • Dummer25 2023-04-06 23:38
    关注
    #include <stdio.h>
    #include <stdlib.h>
    
    int compare(const void* a, const void* b)
    {
        return *(long long*)a - *(long long*)b;
    }
    
    int main()
    {
        int n;
        long long a[100000], b[100000], c[100000];
        int i, j, k;
        int l = 0;
    
        scanf("%d", &n);
        for (i = 0; i < n; i++) {
            scanf("%lld", &a[i]);
        }
        for (i = 0; i < n; i++) {
            scanf("%lld", &b[i]);
        }
        for (i = 0; i < n; i++) {
            scanf("%lld", &c[i]);
        }
    
        // 数组升序排序
        qsort(a, n, sizeof(long long), compare);
        qsort(b, n, sizeof(long long), compare);
        qsort(c, n, sizeof(long long), compare);
    
        // 双指针扫描
        j = 0;
        k = 0;
        for (i = 0; i < n; i++) {
            while (j < n && b[j] <= a[i]) {
                j++;
            }
            if (j == n) {
                break;
            }
            while (k < n && c[k] <= b[j]) {
                k++;
            }
            if (k == n) {
                break;
            }
            l += (n - k);
        }
    
        printf("%d", l);
    
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 修改了问题 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥15 想用@vueuse 把项目动态改成深色主题,localStorge里面的vueuse-color-scheme一开始就给我改成了dark,不知道什么原因(相关搜索:背景颜色)
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题