help_guiyi @ 2023-02-14 15:14:31
代码见下
#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
long long n,k,a[1000001],minx[1000001],maxx[1000001];
int main()
{
memset(minx,1000001,sizeof(minx));
memset(maxx,-1000001,sizeof(maxx));
scanf("%lld%lld",&n,&k);
for(int i=0;i<n;++i)
scanf("%lld",&a[i]);
int l=0,r=k-1;
for(int l,r;r<n;++l,++r)
{
for(int j=l;j<=r;++j)
{
minx[l]=min(minx[l],a[j]);
maxx[l]=max(a[j],maxx[l]);
}
}
for(int i=0;i<l;++i)
printf("%lld ",minx[i]);
printf("\n");
for(int i=0;i<l;++i)
printf("%lld ",maxx[i]);
return 0;
}
情况就是输入样例之后无法输出,哪位大佬帮看看代码
by olegekei @ 2023-02-14 15:19:03
#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
long long n,k,a[1000001],minx[1000001],maxx[1000001];
int main()
{
memset(minx,1000001,sizeof(minx));
memset(maxx,-1000001,sizeof(maxx));
scanf("%lld%lld",&n,&k);
for(int i=0;i<n;++i)
scanf("%lld",&a[i]);
int l=0,r=k-1;
for(;r<n;++l,++r)
{
for(int j=l;j<=r;++j)
{
minx[l]=min(minx[l],a[j]);
maxx[l]=max(a[j],maxx[l]);
}
}
for(int i=0;i<l;++i)
printf("%lld ",minx[i]);
printf("\n");
for(int i=0;i<l;++i)
printf("%lld ",maxx[i]);
return 0;
}
by Rickrool @ 2023-02-14 15:19:23
@help_guiyi 您循环初始里有个 int l,r
,所以接下来调用的是这个 r 而不是一开始设定的,然后又因为没初值还 ub 了
by 李宇涵 @ 2023-02-14 15:20:14
memset
的第二个参数好像是把内存中的每一字节都赋值成一样的东西,所以应该只能填
超过
by 李宇涵 @ 2023-02-14 15:23:05
@help_guiyi 我帮你改好了代码
#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
long long n,k,a[1000001],minx[1000001],maxx[1000001];
int main()
{
memset(minx,0x3f,sizeof(minx));
memset(maxx,0xf3,sizeof(maxx));
scanf("%lld%lld",&n,&k);
for(int i=0;i<n;++i)
scanf("%lld",&a[i]);
int l=0,r=k-1;// 在for外面定义了,在for里面就不要再定义了
for(;r<n;++l,++r)
{
for(int j=l;j<=r;++j)
{
minx[l]=min(minx[l],a[j]);
maxx[l]=max(a[j],maxx[l]);
}
}
for(int i=0;i<l;++i)
printf("%lld ",minx[i]);
printf("\n");
for(int i=0;i<l;++i)
printf("%lld ",maxx[i]);
return 0;
}
by help_guiyi @ 2023-02-14 15:24:04
@olegekei @Rickrool 谢谢大佬,能正常运行了,但是还是有两个点TLE了,请问还能怎么优化一下呢
by 李宇涵 @ 2023-02-14 15:24:40
@help_guiyi ???
by 李宇涵 @ 2023-02-14 15:24:56
@help_guiyi 用单调队列
by help_guiyi @ 2023-02-14 15:25:58
@李宇涵 谢谢大佬,memset好像是可以定义比255大的吧,但还是T了两个点
by 李宇涵 @ 2023-02-14 15:25:58
@help_guiyi here
by help_guiyi @ 2023-02-14 15:27:33
@李宇涵 明白,我去看看单调队列