GastonFontenla

UVa: 10534 - Wavio Sequence

Jun 6th, 2016
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int a[10001], t[10001], r[10001], n, l, i;
  4. int r1[10001], r2[10001];
  5.  
  6. int ceil(int v)
  7. {
  8.     int init = 0, fin = l;
  9.     while(init < fin-1)
  10.     {
  11.         int m = (init+fin)/2;
  12.         if(a[t[m]] >= v)
  13.             fin = m;
  14.         else
  15.             init = m;
  16.     }
  17.  
  18.     if(a[t[init]] >= v)
  19.         return init;
  20.     return fin;
  21. }
  22.  
  23. void lis()
  24. {
  25.     r[0] = 1;
  26.     t[0] = 0;
  27.     l = 0;
  28.  
  29.     for(i=1; i<n; i++)
  30.     {
  31.         if(a[i] > a[t[l]])
  32.         {
  33.             r[i] = r[t[l]]+1;
  34.             l++;
  35.             t[l] = i;
  36.         }
  37.         else
  38.         {
  39.             int p = ceil(a[i]);
  40.             r[i] = r[t[p]];
  41.             t[p] = i;
  42.         }
  43.     }
  44. }
  45.  
  46. int max(int u, int v)
  47. {
  48.     return (u > v ? u : v);
  49. }
  50.  
  51. int min(int u, int v)
  52. {
  53.     return (u < v ? u : v);
  54. }
  55.  
  56. int main()
  57. {
  58.     while(scanf("%d", &n) == 1)
  59.     {
  60.         for(i=0; i<n; i++)
  61.             scanf("%d", &a[i]);
  62.  
  63.         lis();
  64.  
  65.         for(i=0; i<n; i++)
  66.             r1[i] = r[i];
  67.  
  68.         for(i=0; i<n/2; i++)
  69.         {
  70.             int c = a[i];
  71.             a[i] = a[n-i-1];
  72.             a[n-i-1] = c;
  73.         }
  74.         lis();
  75.  
  76.         for(i=0; i<n; i++)
  77.             r2[i] = r[n-1-i];
  78.  
  79.         int maxRes = 1;
  80.  
  81.         for(i=0; i<n; i++)
  82.             maxRes = max(min(r1[i], r2[i])*2 - 1, maxRes);
  83.  
  84.         printf("%d\n", maxRes);
  85.     }
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment