1
#include<iostream>
#include<algorithm>
using namespace std;
int n,arr[1010],ans;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
for(int i=2;i<=n-1;i++){
if(arr[i]>arr[i-1]&&arr[i]>arr[i+1]){
ans++;
}
if(arr[i]<arr[i-1]&&arr[i]<arr[i+1]){
ans++;
}
}
cout<<ans<<endl;
}
2
#include<bits/stdc++.h>
using namespace std;
int a[20][15],b[4][4];
bool cmp(int r,int c){
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(b[i][j]==1&&a[i+r][j+c]==1){
return true;
}
}
}
return false;
}
int main(){
for(int i=15;i<19;i++){
for(int j=0;j<10;j++){
a[i][j]=1;
}
}
for(int i=0;i<15;i++){
for(int j=0;j<10;j++){
cin>>a[i][j];
}
}
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
cin>>b[i][j];
}
}
int n,mark;cin>>n;
for(int i=0;i<15;i++){
if(cmp(i,n-1)){
break;
}
mark=i;
}
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(b[i][j]==1) a[mark+i][j+n-1]=1;
}
}
for(int i=0;i<15;i++){
for(int j=0;j<10;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
4(BFS)
#include<bits/stdc++.h>
using namespace std;
int n,m,t,ans;
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
int A[110][110],B[110][110];
bool vis[110][110][500];
struct P{
int x,y,step;
};
queue<P> s;
void bfs(){
s.push({1,1,0});vis[1][1][0]=true;
while(s.size()){
int x=s.front().x,y=s.front().y,step=s.front().step;
s.pop();
if(x==n&&y==m){
ans=step;
break;
}
for(int i=0;i<4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&!vis[nx][ny][step+1]){
if(A[nx][ny]>0&&step+1>=A[nx][ny]&&step+1<=B[nx][ny]){
continue;
}
vis[nx][ny][step+1]=true;
s.push({nx,ny,step+1});
}
}
}
}
int main(){
cin>>n>>m>>t;
memset(vis,false,sizeof vis);
for(int i=1;i<=t;i++){
int r,c,a,b;
cin>>r>>c>>a>>b;
A[r][c]=a;
B[r][c]=b;
}
bfs();
cout<<ans<<endl;
}