TLE了怎么办?
请各位大佬指点一下。
程序如下:
#include<bits/stdc++.h>
using namespace std;
long long n,k;
int Tethered(int x,long long a[]){
int sum=0,temp=1;
for(int i=2;i<=k;i++){
while(a[i]-a[temp]>=x){
temp=i;
sum++;
}
}
return sum;
}
int main(){
cin>>n>>k;
long long a[k];
cin>>a[0];
for(int i=1;i<k;i++){
a[i]=a[i-1]+(a[i-1]*2357+137)%10+1;
}
int l=0,r=a[k],mid=0;
int ans;
while(l<=r){
mid=(l+r)/2;
if(Tethered(mid,a)>=n) l=mid+1;
if(Tethered(mid,a)<n) r=mid-1;
}
cout<<--l;
return 0;
}