记录编号 |
79098 |
评测结果 |
AAAAAAAAAAA |
题目名称 |
[USACO Feb08] 麻烦的聚餐 |
最终得分 |
100 |
用户昵称 |
Launcher |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.012 s |
提交时间 |
2013-11-05 07:43:38 |
内存使用 |
0.66 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int a[30002]={0},f[30002]={0},g[30002]={0},l[4]={0};
int n,a1,a2;
int Max(int x,int y)
{
if (x<y)
return y;
else
return x;
}
int Min(int x,int y)
{
if (x>y)
return y;
else
return x;
}
int main()
{
freopen("egroup.in","r",stdin);
freopen("egroup.out","w",stdout);
int i,j,k,ans1,ans2;
cin>>n;
for (i=1;i<=n;i++)
cin>>a[i];
f[n]=1;g[n]=1;
a1=500000;
a2=500000;
k=0;
for (i=1;i<=n;i++)
{
k=0;
for (j=1;j<=a[i];j++)
{
k=Max(k,l[j]);
}
k++;
l[a[i]]=k;
}
for (i=1;i<=3;i++)
a1=Min(a1,n-l[i]);
l[1]=0;l[2]=0;l[3]=0;
for (i=n;i>=1;i--)
{
k=0;
for (j=1;j<=a[i];j++)
k=Max(k,l[j]);
k++;
l[a[i]]=k;
}
for (i=1;i<=3;i++)
a2=Min(a2,n-l[i]);
cout<<Min(a1,a2)<<endl;
return 0;
}