#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int a[100001];
int b[100001];
int c[100001];
int N,i,cnt,max;
while(cin>>N)
{
for(i=0;i<N;++i)
{
cin>>a[i];
b[i]=a[i];
}
cnt=0;
max=0;
sort(b,b+N);
for(i=0;i<N;++i)
{
if(max<a[i]) max=a[i];
if(a[i]==b[i]&&a[i]==max) c[cnt++]=a[i];
}
cout<<cnt<<endl;
for(i=0;i<cnt;++i)
{
if(i==0)
cout<<c[i];
else
cout<<' '<<c[i];
}
cout<<endl;
}
return 0;
}
/*运行超时,,,没有认真思考好的求解方法!!!
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
int main()
{
vector<int> a;
vector<int> b;
vector<int> c;
int N,i,t;
while(cin>>N)
{
if(N==1)
{
cin>>t;
cout<<1<<endl<<t<<endl;
continue;
}
for(i=0;i<N;++i)
{
cin>>t;
a.push_back(t);
b.push_back(t);
}
sort(b.begin(),b.end());
if(a[0]==b[0]&&a[0]<*min_element(a.begin()+1,a.begin()+N-1))
c.push_back(a[0]);
for(i=1;i<N-1;++i)
{
if(a[i]==b[i]&&a[i]<*min_element(a.begin()+i+1,a.end())&&a[i]>*max_element(a.begin(),a.begin()+i))
{
c.push_back(a[i]);
}
}
if(a[N-1]==b[N-1]&&a[N-1]>*max_element(a.begin(),a.end()-1))
c.push_back(a[N-1]);
cout<<c.size()<<endl;
if(c.size()>0)
{
cout<<c[0];
for(i=1;i<c.size();++i)
cout<<' '<<c[i];
cout<<endl;
}
a.clear();
b.clear();
c.clear();
}
return 0;
}
*/
/*<span style="font-family: Arial, Helvetica, sans-serif;">运行超时,,,没有认真思考好的求解方法!!!</span>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int min(int *a,int n)
{
int i,m;
m=a[0];
for(i=1;i<n;++i)
{
if(a[i]<m)
m=a[i];
}
return m;
}
int max(int *a,int n)
{
int i,m;
m=a[0];
for(i=1;i<n;++i)
{
if(a[i]>m)
m=a[i];
}
return m;
}
int main()
{
int a[100001];
int b[100001];
int c[100001];
int N,i,j,cnt;
while(cin>>N)
{
if(N==1)
{
cin>>a[0];
cout<<a[0]<<endl;
continue;
}
for(i=0;i<N;++i)
{
cin>>a[i];
b[i]=a[i];
}
cnt=0;
memset(c,0,sizeof(c));
sort(b,b+N);
j=0;
if(a[0]==b[0]&&a[0]<min(a+1,N-1))
{
c[j++]=a[0];
++cnt;
}
for(i=1;i<N-1;++i)
{
if(a[i]==b[i]&&a[i]<min(a+i+1,N-i-1)&&a[i]>max(a,i))
{
c[j++]=a[i];
++cnt;
}
}
if(a[N-1]==b[N-1]&&a[N-1]>max(a,N-1))
{
c[j++]=a[N-1];
++cnt;
}
cout<<cnt<<endl;
if(cnt>0)
{
cout<<c[0];
for(i=1;i<cnt;++i)
cout<<' '<<c[i];
cout<<endl;
}
}
return 0;
}
*/
这道题目真是好题。。
表面上看很简单,但是如果不好好思考就不好做出来,,我自己就是最好的例子。。看来以后做题目思考比动手编码更加重要!!!!