Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.17 KB | None | 0 0
  1. #undef _GLIBCXX_DEBUG
  2.  
  3. #include <bits/stdc++.h>
  4.  
  5. using namespace std;
  6.  
  7. template <typename A, typename B>
  8. string to_string(pair<A, B> p);
  9.  
  10. template <typename A, typename B, typename C>
  11. string to_string(tuple<A, B, C> p);
  12.  
  13. template <typename A, typename B, typename C, typename D>
  14. string to_string(tuple<A, B, C, D> p);
  15.  
  16. string to_string(const string& s) {
  17.   return '"' + s + '"';
  18. }
  19.  
  20. string to_string(const char* s) {
  21.   return to_string((string) s);
  22. }
  23.  
  24. string to_string(bool b) {
  25.   return (b ? "true" : "false");
  26. }
  27.  
  28. string to_string(vector<bool> v) {
  29.   bool first = true;
  30.   string res = "{";
  31.   for (int i = 0; i < static_cast<int>(v.size()); i++) {
  32.     if (!first) {
  33.       res += ", ";
  34.     }
  35.     first = false;
  36.     res += to_string(v[i]);
  37.   }
  38.   res += "}";
  39.   return res;
  40. }
  41.  
  42. template <size_t N>
  43. string to_string(bitset<N> v) {
  44.   string res = "";
  45.   for (size_t i = 0; i < N; i++) {
  46.     res += static_cast<char>('0' + v[i]);
  47.   }
  48.   return res;
  49. }
  50.  
  51. template <typename A>
  52. string to_string(A v) {
  53.   bool first = true;
  54.   string res = "{";
  55.   for (const auto &x : v) {
  56.     if (!first) {
  57.       res += ", ";
  58.     }
  59.     first = false;
  60.     res += to_string(x);
  61.   }
  62.   res += "}";
  63.   return res;
  64. }
  65.  
  66. template <typename A, typename B>
  67. string to_string(pair<A, B> p) {
  68.   return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
  69. }
  70.  
  71. template <typename A, typename B, typename C>
  72. string to_string(tuple<A, B, C> p) {
  73.   return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ")";
  74. }
  75.  
  76. template <typename A, typename B, typename C, typename D>
  77. string to_string(tuple<A, B, C, D> p) {
  78.   return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ", " + to_string(get<3>(p)) + ")";
  79. }
  80.  
  81. void debug_out() { cerr << endl; }
  82.  
  83. template <typename Head, typename... Tail>
  84. void debug_out(Head H, Tail... T) {
  85.   cerr << " " << to_string(H);
  86.   debug_out(T...);
  87. }
  88.  
  89. #ifdef LOCAL
  90. #define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
  91. #else
  92. #define debug(...) 42
  93. #endif
  94.  
  95. int main() {
  96.   int a, b;
  97.   cin >> a >> b;
  98.   debug(a, b);
  99.   return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement