cin太慢,改成scanf就切了
by Buried_Dream @ 2022-01-23 21:54:47
```cpp
#include<bits/stdc++.h>
using namespace std;
long long n,m,lx,rx;
long long a[100005]={};
long long ST[101][100005]={};
long long loog[100005]={};
void STvoid()
{
for(int i=1;i<=n;i++)
{
ST[0][i]=a[i];
}
long long p=loog[n];
for(int k=1;k<=p;k++)
{
for(int i=1;i<=n-(1<<k)+1;i++)
{
ST[k][i]=max(ST[k-1][i],ST[k-1][i+(1<<(k-1))]);
}
}
return;
}
long long pix(long long l,long long r)
{
long long p=loog[r-l+1];
return max(ST[p][l],ST[p][r-(1<<p)+1]);
}
int main()
{
cin>>n>>m;
loog[1]=0;
for(int i=2;i<=n;i++)
{
loog[i]=loog[i>>1]+1;
}
for(int i=1;i<=n;i++)
{
scanf("%d", &a[i]);
}
STvoid();
for(int i=1;i<=m;i++)
{
scanf("%d %d", &lx, &rx);
printf("%d\n", pix(lx, rx));
}
return 0;
}
```
by Buried_Dream @ 2022-01-23 21:55:20
快读快输 @[Colead](/user/243961)
by rsg23 @ 2022-01-23 21:56:13
@[TLE_Automation](/user/396974) @[rsg23](/user/384498)
我用了这个,理论上和scanf一样啊,但还是TLE两个:
```
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
```
by Colead @ 2022-01-23 21:57:29
@[Colead](/user/243961) `endl`好像也挺慢的。
by Carnival @ 2022-01-23 21:59:09
但用scanf确实能切,并且最慢的点才400ms
@[Colead](/user/243961)
by Buried_Dream @ 2022-01-23 21:59:34
试试吧。时限0.8
by Colead @ 2022-01-23 22:00:03
@[Colead](/user/243961) endl 改成 '\n'就切了,并且最慢的点300ms
by Buried_Dream @ 2022-01-23 22:00:40
@[Colead](/user/243961) [Link](https://www.luogu.com.cn/record/67696297)
by Buried_Dream @ 2022-01-23 22:01:22
@[TLE_Automation](/user/396974)
好,我试试。(本蒟蒻不会printf啊)
by Colead @ 2022-01-23 22:01:54