fork download
  1. /*
  2.   Marek p2004a Rusinowski
  3.   II Etap XVIII OI zadanie Temperatura
  4. */
  5.  
  6. #include <cstdio>
  7. #include <vector>
  8. #include <algorithm>
  9.  
  10. using namespace std;
  11.  
  12. #define od second
  13. #define wys first
  14.  
  15. pair<int, int> t[2000001];
  16. pair<int, int> *begin = t + 2000000;
  17. pair<int, int> *end = begin - 1;
  18.  
  19. int main() {
  20. int n, a, b, ab, bb, res = 0;
  21. scanf("%d", &n);
  22. scanf("%d %d", &a, &b);
  23. ab = a; bb = b;
  24. begin->wys = a;
  25. begin->od = 0;
  26. for (int i = 1; i < n; ++i) {
  27. scanf("%d %d", &a, &b);
  28. if (b < begin->wys) { // góra sie zmnijesza wiec coś może odpaść
  29. res = max(res, i - begin->od);
  30. while (b < begin->wys && begin != end) {
  31. --begin;
  32. }
  33. }
  34. if (a < ab) { // dół idzie w dół więc dorzucamy
  35. end->od = i;
  36. end->wys = a;
  37. --end;
  38. } else if (a > ab) { // duł idzie w góre wiec podnoscimy do góry i ucinamy
  39. (end + 1)->wys = a;
  40. while (((end + 2)->wys <= a) && ((end + 1) < begin)) {
  41. (end + 2)->wys = a;
  42. ++end;
  43. }
  44. }
  45. ab = a; bb = b;
  46. }
  47. res = max(res, n - begin->od);
  48. printf("%dn", res);
  49. return 0;
  50. }
  51.  
  52.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty