C题双指针做法 75% TLE 求助
#include<bits/stdc++.h>
using namespace std;
#define PI 3.141****53589
#define int long long
const int N=2e5+10,mod=1e9+7;
int a[N];
signed main(){
int n;cin>>n;
for(int i=1;i<=n;i++){
// cin>>a[i];
scanf("%d",&a[i]);
}
int x;cin>>x;
// cout<<x<<endl;
int cnt=1;
if(n==1){
cout<<1;
return 0;
}
else
{
for(int i=2,j=n+1;i<=j;i++){
int t=j;
cnt++;
while(a[t]<=x&&t>i) t--;//找到当前x左边第一个比他大的数字
if(a[t]>x){
a[t]=x;
j=t;
}
}
cout<<cnt<<endl;
}
return 0;
}
查看5道真题和解析