#一只野生的**罗大神**,去头去尾就可以吃啦**╮( ̄▽ ̄)**╭,蛋白质是牛肉的五倍,鸡肉味,嘎嘣脆。#
by wumei46 @ 2017-03-18 09:28:25
wtf
by demerzel_iv @ 2017-03-18 10:12:01
一只野生的**罗大神**,去头去尾就可以吃啦╮( ̄▽ ̄)╭,蛋白质是牛肉的二十倍,鸡肉味,嘎嘣脆。
by 老K @ 2017-03-18 14:29:15
你找到问题了吗?过的人似乎全都是抄标程的。文件过大又不让下。我的代码如下(希望没出愚蠢的错误):
```cpp
#include<cstdio>
#include<algorithm>
using namespace std;
int n,k,i,j,p[500005],c[500005],s[500005],top;
bool del[500005];
int main()
{
scanf("%d%d",&n,&k);
for(i=1;i<=k;++i)
scanf("%d",p+i);
for(i=1;i<=n;++i)
scanf("%d",c+i);
sort(p+1,p+1+k);
for(i=2;i<=k;++i)
if(c[p[i]]<=c[p[i-1]])
{
puts("impossible");
return 0;
}
for(i=1;i<p[1];++i)
if(c[i]>=c[p[1]])
del[i]=true;
for(i=2;i<=k;++i)
for(j=p[i-1]+1;j<p[i];++j)
if(!(c[j]>c[p[i-1]]&&c[j]<c[p[i]]))
del[j]=true;
for(i=p[k]+1;i<=n;++i)
if(c[i]<=c[p[k]])
del[i]=true;
for(i=1;i<=n;++i)
{
if(del[i])
continue;
if(c[i]>s[top])
s[++top]=c[i];
else
*upper_bound(s+1,s+1+top,c[i])=c[i];
}
printf("%d\n",top);
return 0;
}
```
by rushcheyo @ 2017-06-17 13:29:35
标程二分那一段写得相当糟糕,肯定有问题。
by rushcheyo @ 2017-06-17 13:35:09
@[rushcheyo](/space/show?uid=9643) 第7组数据规定了第0天必须做题
by Niko @ 2017-10-27 09:49:38