Advertisement
JosepRivaille

P75018: Diamants

Apr 13th, 2016
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5.  
  6. void merge(vector<int> &v, int l, int r, int m)
  7. {
  8.     vector<int> B(r - l + 1);
  9.     int i = l;
  10.     int j = m + 1;
  11.     int k = 0;
  12.     while (i <= m and j <= r) {
  13.         if (v[i] <= v[j]) B[k++] = v[i++];
  14.         else B[k++] = v[j++];
  15.     }
  16.     while (i <= m) B[k++] = v[i++];
  17.     while (j <= r) B[k++] = v[j++];
  18.     for (k = 0; k <= r - l; ++k) v[l+k] = B[k];
  19. }
  20.  
  21. void merge_sort(vector<int> &v, int l, int r)
  22. {
  23.     if (l < r) {
  24.         int m = (l+r)/2;
  25.         merge_sort(v, l, m);
  26.         merge_sort(v, m+1, r);
  27.         merge(v, l, r, m);
  28.     }
  29. }
  30.  
  31.  
  32. bool check_add(vector<int> &v, int l, int r, int u)
  33. {
  34.     while (l < r) {
  35.         if (v[l] + v[r] < u) {
  36.             if (v[l] < v[r]) ++l;
  37.             else --r;
  38.         }
  39.         else if (v[l] + v[r] > u) {
  40.             if (v[l] > v[r]) ++l;
  41.             else --r;
  42.         }
  43.         else return true;
  44.     }
  45.     return false;
  46. }
  47.  
  48.  
  49. int main()
  50. {
  51.     int u, n;
  52.     while (cin >> u >> n && (u != 0 || n != 0)) {
  53.         vector<int> v(n);
  54.         for (int i = 0; i < n; ++i) cin >> v[i];
  55.         merge_sort(v, 0, n-1);
  56.         if (check_add(v, 0, n-1, u)) cout << "married" << endl;
  57.         else cout << "single" << endl; 
  58.     }
  59. }
  60.  
  61. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement