Advertisement
VisualPaul

C++ in Deutsch

Sep 24th, 2014
512
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.63 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define nutzungen using
  3. #define Namenraum namespace
  4. #define typdefin typedef
  5. #define lang long
  6. #define ganz int
  7. #define doppelt double
  8. #define komplexe complex
  9. #define Klass class
  10. #define schablone template
  11. #define inzeile inline
  12. #define konst const
  13. #define gib return
  14. #define statisch_besetz static_cast
  15. #define Gross size
  16. #define Typname typename
  17. #define Leere void
  18. #define Konstausdruck constexpr
  19. #define Abbildung map
  20. #define haupt main
  21. #define Zeich char      
  22. #define einzigartig_Zeig unique_ptr
  23. #define Istromung istream
  24. #define Ostromung ostream
  25. #define Ifstromung ifstream
  26. #define Ofstromung ofstream
  27. #define wech switch
  28. #define Fall case
  29. #define Default default
  30. #define brech break
  31. #define neusetz reset
  32. #define neu new
  33. #define erhalt get
  34. #define wenn if
  35. #define sync_mit_stdio sync_with_stdio
  36. #define nullzeig nullptr
  37. #define verbind tie
  38. #define fur for
  39. #define untere_Schranke lower_bound
  40. #define obere_Schranke upper_bound
  41. #define einsetz insert
  42. #define falsch false
  43. #define wahr true
  44. #define endzeil endl
  45. #define zin cin
  46. #define zout cout
  47. #define zfehl cerr
  48. #define schweb float
  49. #define kurz short
  50. #define mach_Paar make_pair
  51. #define Paar pair
  52. #define losch erase
  53. #define zweite second
  54. #define erste first
  55. #define fruher prev
  56. #define Vektor vector
  57. #define druck_zuruck push_back
  58. #define wennaber else if
  59. #define ansonsten else
  60. #define Paar pair
  61.  
  62. nutzungen Namenraum std;
  63.  
  64. typdefin komplexe<doppelt> Vk;
  65. typdefin lang lang ll;
  66.  
  67. schablone <Klass Behal>
  68. inzeile ganz lan(konst Behal &b)
  69. {
  70.     gib statisch_besetz<ganz>(b.Gross());
  71. }
  72.  
  73. schablone <Typname T>
  74. inzeile Leere maximier(T &was, konst T &mit)
  75. {
  76.     wenn (was < mit)
  77.         was = mit;
  78. }
  79.  
  80. schablone <Typname T>
  81. inzeile Leere minimier(T &was, konst T &mit)
  82. {
  83.     wenn (was > mit)
  84.         was = mit;
  85. }
  86.  
  87. schablone <Typname T>
  88. Konstausdruck T qa(T x) {
  89.     gib x * x;
  90. }
  91. schablone <Typname T>
  92. Konstausdruck T Exp(T a, ganz b) {
  93.     gib b == 0? T(1) : (b & 1? a * Exp(a, b - 1): qa(Exp(a, b >> 1)));
  94. }
  95.  
  96. Abbildung<ganz, ganz> st {{-2, -1}, {Exp(10, 9) + 1, -2}};
  97. Abbildung<ganz, ganz> en {{-1, -1}, {Exp(10, 9) + 2, -2}};
  98.  
  99. ganz haupt(ganz argn, Zeich **argv) {
  100.     std::einzigartig_Zeig<std::Ifstromung> _in;
  101.     std::einzigartig_Zeig<std::Ofstromung> _out;
  102.     wech (argn) {
  103.     Fall 3:
  104.         _out.neusetz(neu std::Ofstromung(argv[2]));
  105.     Fall 2:
  106.         _in.neusetz(neu std::Ifstromung(argv[1]));
  107.     Fall 1:
  108.         brech;
  109.     Default :
  110.         zfehl << "das ist nicht richtig Argumentformat!\n";
  111.         gib -1;
  112.     }
  113.     std::Istromung &in = _in? *_in.erhalt() : zin;
  114.     std::Ostromung &out = _out? *_out.erhalt() : zout;
  115.     ios_base::sync_mit_stdio(falsch);
  116.     zin.verbind(nullzeig);
  117.     ganz m, n;
  118.     in >> m >> n;
  119.     Vektor<Paar<ganz, ganz>> Anfrag;
  120.     fur (ganz i = 0; i < n; ++i) {
  121.         ganz a, b;
  122.         in >> a >> b;
  123.         ++b;
  124.         Anfrag.druck_zuruck(mach_Paar(a, b));
  125.         fur (;;) {            
  126.             auto sb = fruher(st.untere_Schranke(b));
  127.             auto se = en.obere_Schranke(a);
  128.             wenn (sb->zweite == se->zweite) {
  129.                 en.losch(se);
  130.                 st.losch(sb);
  131.             } wennaber (sb->erste >= a) {
  132.                 en.losch(Anfrag[sb->zweite].zweite);
  133.                 st.losch(sb);
  134.             } wennaber (se->erste <= b) {
  135.                 st.losch(Anfrag[se->zweite].erste);
  136.                 en.losch(se);
  137.             } ansonsten {
  138.                 brech;
  139.             }
  140.         }
  141.         st.einsetz(mach_Paar(a, i));
  142.         en.einsetz(mach_Paar(b, i));
  143.     }
  144.     out << st.Gross() - 2 << endzeil;
  145.     gib 0;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement