#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;
}
#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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:以下在Linux下测试:
c函数: void MyFunc(){} ,被编译成函数: MyFunc c++
函数: void MyFunc(){},被编译成函数:_Z6Myfuncv
通过测试我们可以看到,c++支持函数重载,c++会根据自身习惯对函数名进行修饰,经过编译后c和c++产生的函数名是不同的,导致c++链接不到c语言中的函数。