Advertisement
ZulaMostafa

Untitled

Dec 11th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.94 KB | None | 0 0
  1. #include <vector>
  2. #include <algorithm>
  3.  
  4. bool exists(std::vector<int>, int);
  5. using namespace std;
  6.  
  7. int main() {
  8.     int n;
  9.     cin >> n;
  10.     vector<int> vec;
  11.     for (int i = 0; i < n; i++) {
  12.         int temp;
  13.         cin >> temp;
  14.         vec.push_back(temp);
  15.     }
  16.  
  17.     sort(vec.begin(), vec.end());
  18.  
  19.     int c = 0;
  20.     while (vec.size() > 0) {
  21.         for (int i = 0; i < vec.size(); i++) {
  22.             if (vec[i] == 1) {
  23.                 if (exists(vec, 3)) {
  24.                     vec.erase(vec.begin() + i);
  25.                     vec.erase(find(vec.begin(), vec.end(), 3));
  26.                     c++;
  27.                 }
  28.                 else if (exists(vec, 2)) {
  29.                     if (exists(vec, 1) && count(vec.begin(), vec.end(), 1) > 1) {
  30.                         vec.erase(find(vec.begin(), vec.end(), 1));
  31.                         vec.erase(find(vec.begin() + i + 1, vec.end(), 1));
  32.                         vec.erase(find(vec.begin(), vec.end(), 2));
  33.                         c++;
  34.                     }
  35.                     else {
  36.                         vec.erase(find(vec.begin(), vec.end(), 1));
  37.                         vec.erase(find(vec.begin(), vec.end(), 2));
  38.                         c++;
  39.                     }
  40.                 }
  41.                 else if (count(vec.begin(), vec.end(), 1) > 1) {
  42.                     if (count(vec.begin(), vec.end(), 1) >= 4)
  43.                     {
  44.                         for (int j = 0; j < 4; j++) {
  45.                             vec.erase(find(vec.begin(), vec.end(), 1));
  46.                         }
  47.                     }
  48.                     else {
  49.                         for (int j = 0; j < count(vec.begin(), vec.end(), 1); j++) {
  50.                             vec.erase(find(vec.begin(), vec.end(), 1));
  51.                         }
  52.                     }
  53.                     cout << endl;
  54.                     c++;
  55.                 }
  56.             }
  57.             else if (vec[i] == 2) {
  58.                 if (exists(vec, 2) && count(vec.begin(), vec.end(), 2) > 1) {
  59.                     vec.erase(find(vec.begin(), vec.end(), 2));
  60.                     vec.erase(find(vec.begin(), vec.end(), 2));
  61.                     c++;
  62.                 }
  63.                 else {
  64.                     vec.erase(find(vec.begin(), vec.end(), 2));
  65.                     c++;
  66.                 }
  67.             }
  68.             else if (vec[i] == 3) {
  69.                 vec.erase(find(vec.begin(), vec.end(), 3));
  70.                 c++;
  71.             }
  72.             else {
  73.                 vec.erase(find(vec.begin(), vec.end(), 4));
  74.                 c++;
  75.             }
  76.         }
  77.     }
  78.     cout << c;
  79.     return 0;
  80.  
  81. }
  82.  
  83. bool exists(vector<int> v, int x) {
  84.     if (find(v.begin(), v.end(), x) != v.end())
  85.         return true;
  86.     else
  87.         return false;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement