201604-01c++
#include<iostream>
using namespace std;
int main(){
int n,x1,count=0,flag=0;
cin>>n>>x1;
while(--n){
int x2;
cin>>x2;
if(x1<=x2){
if(flag==-1) count++;
flag=1;
}
else{
if(flag==1) count++;
flag=-1;
}
x1=x2;
}
cout<<count<<endl;
return 0;
}
201604-02c++
#include<iostream>
using namespace std;
int a[17][11];
int b[5][5];
int main()
{
int i,j,k,n;
//读入15行10列的初始方格图
for(i=1;i<=15;i++)
for(j=1;j<=10;j++)
cin>>a[i][j];
//技巧,在方格图底部多加一行并使之为1,这样避免判断出界的问题
for(j=1;j<=10;j++)
a[16][j]=1;
//读入4行4列的板块图案
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
cin>>b[i][j];
cin>>n;
//求出最大下降距离d,初始为15
int d=15;
for(i=4;i>0;i--){ //计算板块图案每行最大的下降距离
int sum=0;
for(k=1;k<=4;k++)
sum+=b[i][k];
if(sum==0)//如果这是一个空行,就不用判断
continue;
int t=0;//初始下降距离为0
for(j=i+1;j<=16;j++){//从此行的下一行开始判断
for(k=1;k<=4;k++)
if(b[i][k]+a[j][n+k-1]==2)
break;
if(k==5)
t++;
else
break;
}
d=min(d,t);
}
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
if(b[i][j]==1)
a[i+d][n+j-1]=1;
//输出变换后的结果
for(i=1;i<=15;i++){
for(j=1;j<=10;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
/*#include<iostream>
using namespace std;
int main()
{
int s[15][10],t[4][4],t1[4][4],x;
for(int i=0; i<15; i++)
for(int j=0; j<10; j++)
cin>>s[i][j];
for(int i=0; i<4; i++)
for(int j=0; j<4; j++)
cin>>t[i][j];
cin>>x;
int left=0,right=0,top=0,bottom=0;
for(int i=0; i<4; i++)
{
if(t[i][0]==0&&t[i][1]==0&&t[i][2]==0&&t[i][3]==0)
top++;
else
break;
}
for(int i=3; i>=0; i--)
{
if(t[i][0]==0&&t[i][1]==0&&t[i][2]==0&&t[i][3]==0)
bottom++;
else
break;
}
for(int i=3; i>=0; i--)
{
if(t[0][i]==0&&t[1][i]==0&&t[2][i]==0&&t[3][i]==0)
right++;
else
break;
}
for(int i=0; i<4; i++)
{
if(t[0][i]==0&&t[1][i]==0&&t[2][i]==0&&t[3][i]==0)
left++;
else
break;
}
int n1,m1;
n1=3-bottom;
m1=3-right;
for(int i=top,i1=0; i<=n1,i1<=n1-top; i++,i1++)
{
for(int j=left,j1=0; j<=m1,j1<=m1-left; j++,j1++)
{
t1[i1][j1]=t[i][j];
}
}
int flag,flag_i=0,i,j;
for(i=3-bottom; i<15; i++)
{
for(j=x+left-1; j<=x-right+2; j++)
{
if(s[i][j]==0) flag_i=1;
else
{
flag_i=-1;
break ;
}
}
if(flag_i==-1) break;
}
for(int p=n1-top; p>=0,i>=15-n1; p--,i--)
{
flag=0;
for(int q=0,q1=x+left-1; q<=m1-left,q1<=x-right+2; q++,q1++)
{
if(t1[p][q]==1&&s[i][q1]==1)
{
flag=-1;
break ;
}
if((t1[p][q]==0&&s[i][q1]==1)||(t1[p][q]==0&&s[i][q1]==0)||(t1[p][q]==1&&s[i][q1]==0))
{
flag++;
}
}
if(flag==m1)
{
for(int q=0,q1=x+left-1; q<=m1,q1<=x-right+2; q++,q1++)
{
if(s[i][q1]==0) s[i][q1]=t1[p][q];
}
}
}
for(int a=0; a<15; a++)
{
for(int b=0; b<10; b++)
{
cout<<s[a][b]<<' ';
}
cout<<endl;
}
return 0;
}