我的代码在oj上超时了,请帮我优化代码,使之能过oj。
oj链接https://codeforces.com/gym/103117/problem/K
#include<bits/stdc++.h>
#define N 1000010
using namespace std;
int p[N]={0};
int s[N]={0};
int main()
{
int n=0,k=0;
int s1=0,s2=0;
int f=0;
scanf("%d%d",&n,&k);
f=n-1;
int i=0;
for (i=0;i<n;++i) s[i]=p[i]=i+1;
do
{
s1=0;
for (i=0;i<f;++i) if(p[i]+k==p[i+1]) ++s1;
if (s1>s2)
{
for (i=0;i<n;++i) s[i]=p[i];
s2=s1;
}
if (s2==f) break;
}
while (next_permutation(p,p+n));
for (i=0;i<f;++i) printf("%d ",s[i]);
printf("%d",s[f]);
return 0;
}