Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define nutzungen using
- #define Namenraum namespace
- #define typdefin typedef
- #define lang long
- #define ganz int
- #define doppelt double
- #define komplexe complex
- #define Klass class
- #define schablone template
- #define inzeile inline
- #define konst const
- #define gib return
- #define statisch_besetz static_cast
- #define Gross size
- #define Typname typename
- #define Leere void
- #define Konstausdruck constexpr
- #define Abbildung map
- #define haupt main
- #define Zeich char
- #define einzigartig_Zeig unique_ptr
- #define Istromung istream
- #define Ostromung ostream
- #define Ifstromung ifstream
- #define Ofstromung ofstream
- #define wech switch
- #define Fall case
- #define Default default
- #define brech break
- #define neusetz reset
- #define neu new
- #define erhalt get
- #define wenn if
- #define sync_mit_stdio sync_with_stdio
- #define nullzeig nullptr
- #define verbind tie
- #define fur for
- #define untere_Schranke lower_bound
- #define obere_Schranke upper_bound
- #define einsetz insert
- #define falsch false
- #define wahr true
- #define endzeil endl
- #define zin cin
- #define zout cout
- #define zfehl cerr
- #define schweb float
- #define kurz short
- #define mach_Paar make_pair
- #define Paar pair
- #define losch erase
- #define zweite second
- #define erste first
- #define fruher prev
- #define Vektor vector
- #define druck_zuruck push_back
- #define wennaber else if
- #define ansonsten else
- #define Paar pair
- nutzungen Namenraum std;
- typdefin komplexe<doppelt> Vk;
- typdefin lang lang ll;
- schablone <Klass Behal>
- inzeile ganz lan(konst Behal &b)
- {
- gib statisch_besetz<ganz>(b.Gross());
- }
- schablone <Typname T>
- inzeile Leere maximier(T &was, konst T &mit)
- {
- wenn (was < mit)
- was = mit;
- }
- schablone <Typname T>
- inzeile Leere minimier(T &was, konst T &mit)
- {
- wenn (was > mit)
- was = mit;
- }
- schablone <Typname T>
- Konstausdruck T qa(T x) {
- gib x * x;
- }
- schablone <Typname T>
- Konstausdruck T Exp(T a, ganz b) {
- gib b == 0? T(1) : (b & 1? a * Exp(a, b - 1): qa(Exp(a, b >> 1)));
- }
- Abbildung<ganz, ganz> st {{-2, -1}, {Exp(10, 9) + 1, -2}};
- Abbildung<ganz, ganz> en {{-1, -1}, {Exp(10, 9) + 2, -2}};
- ganz haupt(ganz argn, Zeich **argv) {
- std::einzigartig_Zeig<std::Ifstromung> _in;
- std::einzigartig_Zeig<std::Ofstromung> _out;
- wech (argn) {
- Fall 3:
- _out.neusetz(neu std::Ofstromung(argv[2]));
- Fall 2:
- _in.neusetz(neu std::Ifstromung(argv[1]));
- Fall 1:
- brech;
- Default :
- zfehl << "das ist nicht richtig Argumentformat!\n";
- gib -1;
- }
- std::Istromung &in = _in? *_in.erhalt() : zin;
- std::Ostromung &out = _out? *_out.erhalt() : zout;
- ios_base::sync_mit_stdio(falsch);
- zin.verbind(nullzeig);
- ganz m, n;
- in >> m >> n;
- Vektor<Paar<ganz, ganz>> Anfrag;
- fur (ganz i = 0; i < n; ++i) {
- ganz a, b;
- in >> a >> b;
- ++b;
- Anfrag.druck_zuruck(mach_Paar(a, b));
- fur (;;) {
- auto sb = fruher(st.untere_Schranke(b));
- auto se = en.obere_Schranke(a);
- wenn (sb->zweite == se->zweite) {
- en.losch(se);
- st.losch(sb);
- } wennaber (sb->erste >= a) {
- en.losch(Anfrag[sb->zweite].zweite);
- st.losch(sb);
- } wennaber (se->erste <= b) {
- st.losch(Anfrag[se->zweite].erste);
- en.losch(se);
- } ansonsten {
- brech;
- }
- }
- st.einsetz(mach_Paar(a, i));
- en.einsetz(mach_Paar(b, i));
- }
- out << st.Gross() - 2 << endzeil;
- gib 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement