fork(2) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. /*#include<ext/pb_ds/assoc_container.hpp>
  4. #include<ext/pb_ds/tree_policy.hpp>
  5. using namespace __gnu_pbds;
  6. /*template <typename T>
  7. using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
  8. */typedef long long ll;
  9. typedef long double ld;
  10. typedef pair<ll,ll> pl;
  11. typedef pair<int,int> pii;
  12.  
  13. #define LOCAL 0
  14. #define dbg(x) cerr << #x << " is " << x << " "
  15. #define gll(x) scanf("%d",&x)
  16. #define gll2(x,y) scanf("%d%d",&x,&y)
  17. #define gll3(x,y,z) scanf("%d%d%d",&x,&y,&y)
  18. #define gllarr(arr,n) f(i,n) gll(arr[i]);
  19. #define sz(x) ((int)x.size())
  20. #define s(x) sort(x.begin(),x.end())
  21. #define all(v) v.begin(),v.end()
  22. #define rs(v) { s(v) ; r(v) ; }
  23. #define r(v) {reverse(all(v));}
  24. #define pb push_back
  25. #define mp make_pair
  26. #define F first
  27. #define S second
  28. #define f(i,n) for(int i=0;i<n;i++)
  29. #define fr(i,n) for(int i=n-1;i>=0;i--)
  30. #define rep(i,a,b) for(int i=a;i<=b;i++)
  31. #define repr(i,a,b) for(int i=a;i>=b;i--)
  32.  
  33. const ll mod = 1000000007;
  34. const ll inf = (int)1e9;
  35. const ld eps = 1e-12;
  36. const ll N = (int)3e6+5;
  37. const ll LOGN = 19;
  38. const ld PI = 3.14159265358979323846;
  39. ll mul(ll a, ll b, ll m = mod) { return (ll)(a * b) % m;}
  40. ll add(ll a, ll b, ll m = mod) { a += b; if(a >= m) a -= m; if(a < 0) a += m; return a;}
  41. ll power(ll a, ll b, ll m = mod) { if(b == 0) return 1; if(b == 1) return (a % m); ll x = power(a, b / 2, m); x = mul(x, x, m); if(b % 2) x = mul(x, a, m); return x;}
  42.  
  43. int n;
  44. int a[300];
  45.  
  46.  
  47. int rec(int pos,int mini,int max)
  48. {
  49. int p,q,r;
  50. p = q = r = inf;
  51. if(pos == n-1)
  52. {
  53. if(a[pos] > max || a[pos] < mini)
  54. return 0;
  55. return 1;
  56. }
  57. if(a[pos] < mini)
  58. {
  59. p = rec(pos+1,a[pos],max);
  60. }
  61. if(a[pos] > max)
  62. {
  63. q = rec(pos+1,mini,a[pos]);
  64. }
  65. r = rec(pos+1,mini,max) + 1;
  66. return min(r,min(p,q));
  67. }
  68.  
  69. int main()
  70. {
  71. //ios_base::sync_with_stdio(false);
  72. //cin.tie(NULL);
  73. //cout.tie(NULL);
  74. if(LOCAL)
  75. {
  76. freopen("C:\\Users\\Dishant\\Desktop\\Collection-DEV c++\\input.txt","r",stdin);
  77. freopen("C:\\Users\\Dishant\\Desktop\\Collection-DEV c++\\output.txt","w",stdout);
  78. }
  79. while(scanf("%d",&n) && n!=-1)
  80. {
  81. gllarr(a,n);
  82. cout<<rec(0,inf,-inf)<<endl;
  83. }
  84. return 0;
  85. }
Success #stdin #stdout 0s 4280KB
stdin
8
1 4 2 3 3 2 4 1
12
7 8 1 2 4 6 3 5 2 1 8 7
-1
stdout
0
2