资深光能
我一看,5分钟写完,又一看WA90.....(又没超时,第三个点WA)
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,a[300005],maxn,cnt;
bool cmp(int m,int n){
return m<n;
}
void qsort(int a[],int l,int r){
int i=l,j=r,mid=a[(l+r)/2];
while(i<=j){
while(cmp(a[i],mid)) i++;
while(cmp(mid,a[j])) j--;
if(i<=j){
swap(a[i],a[j]);
i++;
j--;
}
}
if(l<j) qsort(a,l,j);
if(i<r) qsort(a,i,r);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
maxn=max(maxn,a[i]);
}
qsort(a,1,n);
for(int i=1;i<=n;i++){
if(a[i]+n>=maxn+1&&a[i]+n>=a[2]+n-1)cnt++;
}
cout<<cnt;
return 0;
}
@王文博
缔造者之神
核心:
for(int i=1;i<=n;i++) c[i]=b[i]+n-i+1;
for(int i=1;i<=n;i++) if(maxn<c[i]) maxn=c[i];
for(int i=n;i>=1;i--)
{
if(b[i]+n>=maxn) ans++;
else break;
}
b数组要从小到大排序(注:你确定不再恶搞???????二分排序都用上了)
王文博在2021-08-08 15:25:58追加了内容
在
中级光能
#include<iostream> using namespace std; int a[300001],maxn,cnt,n; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; if(a[i]>maxn){ maxn=a[i]; } } for(int i=1;i<=n;i++){ if(a[i]+n>maxn+1){ cnt++; } } if(cnt!=0){ cout<<cnt; }else{ cout<<1; } }
我的代码
第7个点错了,也TLE90