RT,没有加任何优化直接 O(n2) 暴力过去,最慢的点 20ms:
代码:
#include <cstdio>
#define N 10010
int a[N];
int n;
int main()
{
int q,op,x;
scanf("%d",&q);
while(q--)
{
scanf("%d%d",&op,&x);
switch(op)
{
case 1://rank
{
int ans=0;
for(int i=1;i<=n;i++)
if(a[i]<x)
ans++;
else
break;
printf("%d\n",ans+1);
break;
}
case 2://find
{
printf("%d\n",a[x]);
break;
}
case 3://pre
{
for(int i=n;i>=1;i--)
if(a[i]<x)
{
printf("%d\n",a[i]);
goto end0;
}
printf("-2147483647\n");
end0:break;
}
case 4://nxt
{
for(int i=1;i<=n;i++)
if(a[i]>x)
{
printf("%d\n",a[i]);
goto end;
}
printf("2147483647\n");
end:;break;
}
case 5://insert
{
for(int i=1;i<=n;i++)
{
if(a[i]>=x)
{
for(int j=n;j>=i;j--) a[j+1]=a[j];
a[i]=x;
goto end1;
}
}
a[n+1]=x;
end1:n++;
break;
}
}
}
return 0;
}
评测记录
话说这个应该@哪个管理9kcf