Guest User

Untitled

a guest
Feb 14th, 2016
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. #include <list>
  2. #include <map>
  3. #include <set>
  4. #include <deque>
  5. #include <stack>
  6. #include <queue>
  7. #include <algorithm>
  8. #include <sstream>
  9. #include <iostream>
  10. #include <iomanip>
  11. #include <cstdio>
  12. #include <cmath>
  13. #include <cstdlib>
  14. #include <memory.h>
  15. #include <ctime>
  16. #include <bitset>
  17. #include <unordered_map>
  18.  
  19. using namespace std;
  20.  
  21. #define ABS(a) ((a>0)?a:-(a))
  22. #define MIN(a,b) ((a<b)?(a):(b))
  23. #define MAX(a,b) ((a<b)?(b):(a))
  24. #define FOR(i,a,n) for (int i=(a);i<(n);++i)
  25. #define FI(i,n) for (int i=0; i<(n); ++i)
  26. #define pnt pair <int, int>
  27. #define mp make_pair
  28. #define PI 3.1415926535897
  29. #define MEMS(a,b) memset(a,b,sizeof(a))
  30. #define LL long long
  31. #define U unsigned
  32.  
  33. int a[510];
  34. int b[510];
  35.  
  36. int dp[2][510][510];
  37.  
  38. int main()
  39. {
  40. #ifdef Fcdkbear
  41.     freopen("in.txt", "r", stdin);
  42.     double beg = clock();
  43.     //freopen("out.txt", "w", stdout);
  44. #endif
  45.  
  46.     int n,m;
  47.     cin>>n>>m;
  48.     FOR(i,0,n)
  49.         cin>>a[i];
  50.     FOR(i,0,m)
  51.         cin>>b[i];
  52.     MEMS(dp[0],-1);
  53.     dp[0][0][0] = 501;
  54.     int v = 0;
  55.     FOR(p1,0,n)
  56.     {
  57.         int nv = (v^1);
  58.         MEMS(dp[nv],-1);
  59.         FOR(p2,0,m)
  60.             FOR(min1,0,501)
  61.             {
  62.                 if (dp[v][p2][min1] == -1)
  63.                     continue;
  64.                 if (min1>dp[v][p2][min1])
  65.                     continue;
  66.                 int max1 = dp[v][p2][min1];
  67.                 dp[v][p2+1][min1] = max(dp[v][p2+1][min1], max1);
  68.                 if ((b[p2]<=min1) || (b[p2]>=max1))
  69.                     continue;
  70.                 if ((p1 == n - 1) || (a[p1]>a[p1+1]))
  71.                 {
  72.                     dp[nv][p2+1][min1] = max(dp[nv][p2+1][min1], b[p2]);
  73.                 }
  74.                 else
  75.                 {
  76.                     dp[nv][p2+1][b[p2]] = max(dp[nv][p2+1][b[p2]], max1);
  77.                 }
  78.             }
  79.         v = nv;
  80.     }
  81.     FOR(p2,0,m+1)
  82.         FOR(min1,0,501)
  83.             if (dp[v][p2][min1]>min1)
  84.             {
  85.                 cout<<"Yes"<<endl;
  86.                 return 0;
  87.             }
  88.     cout<<"No"<<endl;
  89.  
  90. #ifdef Fcdkbear
  91.     double end = clock();
  92.     fprintf(stderr, "*** Total time = %.3lf ***\n", (end - beg) / CLOCKS_PER_SEC);
  93. #endif
  94.     return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment