重名大师 2023-04-06 23:22 采纳率: 96.6%
浏览 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 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭