前言
算是脑经急转弯了,hh
传送门 :
思路
这题反而不可以想太细,什么的,其实我们完全不用考虑碰撞
之后的掉头过程,因为如果把碰撞改为穿过 也是合情合理的
因此我们计算答案只需要
a
n
s
=
l
e
f
t
+
r
i
g
h
t
+
1
ans = left + right+1
ans=left+right+1
第一只左边向右的数量,右边向左的数量,和本身
这样子我们就可以算出答案了
(其实有的时候,不要被题目迷惑了)
CODE
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define px first
#define py second
#define pb push_back
typedef pair<int,int> pii;
int dxy[4][2] = {{-1,0},{0,1},{1,0},{0,-1}};
const int N = 210;
struct union_find_set{
int n,p[N];
void init(int N)
{
n = N;
for(int i=1;i<=n;i++)
p[i] = i ;
}
int find(int x)
{
if(p[x]!=x)return p[x] =find(p[x]);
return p[x];
}
bool set_union(int u,int v)
{
return (u = find(u)) ==(v == find(v))?false : p[v] = u ;
}
}ufs;
int n,m,t;
void cal()
{
}
void solve()
{
cin>>n;
int t;cin>>t;
int left = 0;
int right = 0 ;
for(int i=1;i<n;i++)
{
int x;cin>>x;
if(abs(x) < abs(t) && x>0) right++;
///左边的向右走
//右边的向左走
if(abs(x) > abs(t) && x<0) left++;
}
if(t <0 && right == 0)
cout<<1<<endl;
else
if(t >0 && left == 0)
cout<<1<<endl;
else
cout<<left+right+1<<endl;
}
int main()
{
ios::sync_with_stdio(false);
solve();
return 0;
}