这是我的代码来计算否。时间A [i]> B [j]这样, 我< Ĵ
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,c=0,j=1,i;
cin>>n;
int*a,*b;
a=(int*)malloc(sizeof(int)*n);
b=( int*)malloc(sizeof( int)*n);
for( i=0;i<n;i++)
{
cin>>a[i];
}
for( i=0;i<n;i++)
{
cin>>b[i];
}
while(j<n)
{
for( i=0;i<j;i++)
{
if(a[i]>b[j])
c++;
}
j++;
}
cout<<c;
return 0;
}
这只是工作正常,我尝试使用getchar_unlocked
来减少时间,但我在网站上得到了错误的答案。最初的测试用例向我展示了正确的输出,并且我确实使用cin
输入流为所有情况做了相同的algo工作但是我没有使用getchar_unlocked
这样做我的输入函数中是否有任何错误,或者我在哪里做错了?
我的getchar_unlock
看起来像这样
int readInt()
{
char c=getchar_unlocked();
while(c<'1'||c>'9')
c=getchar_unlocked();
int ret=0;
while(c>='1'&&c<='9')
{
ret=ret*10+c-48;
c=getchar_unlocked();
}
return ret;
}
P.S:我不知道失败的测试用例:(
答案 0 :(得分:1)
如果存在非前导零,则readInt()
不起作用。例如,如果输入为10
,则会返回1
。
这是我经过试验和测试的实现(仅适用于非负整数)。
int get() {
int res = 0;
int c;
do {
c = getchar_unlocked();
} while (c <= 32);
do {
res = 10*res + c - '0';
c = getchar_unlocked();
} while (c > 32);
return res;
}
另外,我建议您使用std::vector
而不是直接致电malloc
或new
。