Facebook
From RH, 1 Month ago, written in C++.
Embed
Download Paste or View Raw
Hits: 125
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long ll;
  5. typedef unsigned int ui;
  6.  
  7. #define sim template < class c
  8. #define ris return * this
  9. #define dor > debug & operator <<
  10. #define eni(x) sim > typename
  11.   enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
  12. sim > struct rge {c b, e; };
  13. sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
  14. sim > auto dud(c* x) -> decltype(cerr << *x, 0);
  15. sim > char dud(...);
  16. struct debug {
  17. #ifdef LOCAL
  18. ~debug() { cerr << endl; }
  19. eni(!=) cerr << boolalpha << i; ris; }
  20. eni(==) ris << range(begin(i), end(i)); }
  21. sim, class b dor(pair < b, c > d) {
  22.   ris << "(" << d.first << ", " << d.second << ")";
  23. }
  24. sim dor(rge<c> d) {
  25.   *this << "[";
  26.   for (auto it = d.b; it != d.e; ++it)
  27.     *this << ", " + 2 * (it == d.b) << *it;
  28.   ris << "]";
  29. }
  30. #else
  31. sim dor(const c&) { ris; }
  32. #endif
  33. };
  34. #define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
  35.  
  36. // mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  37. // ll my_rand(ll l, ll r) {
  38. //     return uniform_int_distribution<ll>(l, r) (rng);
  39. // }
  40.  
  41. void tcase(int Tcase)
  42. {
  43.  int n, x, y, temp, gap = 0;
  44.     scanf("%d %d %d",&n, &x, &y);
  45.     int a[n+5];
  46.     memset(a, 0, (n+5)*sizeof(a[0]));
  47.     for(int i = 0; i < x; i++){
  48.         scanf("%d",&temp;);
  49.         a[temp] = 1;
  50.     }
  51.     for(int i = 1; i < n-1; i++){
  52.         if(a[i] && a[i+2]){
  53.             gap++;
  54.             if(a[i+1]){
  55.                 x--;
  56.                 a[i+1] = 0;
  57.             }
  58.         }
  59.     }
  60.     if(a[n-1] && a[1]){
  61.         gap++;
  62.         if(a[n]){
  63.             x--;
  64.             a[n] = 0;
  65.         }
  66.     }
  67.     if(a[n] && a[2]){
  68.         gap++;
  69.         if(a[1]){
  70.             x--;
  71.             a[1] = 0;
  72.         }
  73.     }
  74.     printf("%dn",x-2+gap);
  75. }
  76.  
  77. int main(){
  78.  int T = 1;
  79.    scanf("%d",&T);
  80.    for(int Tcase = 1; Tcase <= T; Tcase++){
  81.     tcase(Tcase);
  82.    }
  83.  //tcase();
  84. }
  85.