0
已解决
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,count=0;
cin>>n;
int a[n];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n-1;i++)
{
for(int j=i+1;j<=n;j++)
{
if(a[i]-a[j]==n||a[j]-a[i]==n)
{
count++;
}
}
}
cout<<count;
return 0;
}
找错,谢谢大佬们
0
已采纳
对于100%的数据,N <= 200000。
200000^2>10^8
所以双重循环要超时,要用更高端的方法!(我只得了70分)。
1、要输入n和m,你的m呢?
所以,你的代码第十六行就要改为:
if(a[i]-a[j]==m||a[j]-a[i]==m)
2、
int a[n];
和
for(int j=i+1;j<=n;j++)
{
if(a[i]-a[j]==m||a[j]-a[i]==m)
{
count++;
}
}
不会使数组越界吗?
所以,a数组尽量定义比n大一点。
得100分的方法需要二分(可能吧)!
建议先得不部分分,打牢基础再这道题吧!(加上O2,O3优化后三个点还会超时!)。
0
