Advertisement
Malinovsky239

Untitled

Jan 23rd, 2012
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <vector>
  5.  
  6. #define N 105
  7. #define pb push_back
  8.  
  9. using namespace std;
  10.  
  11. int k, m, n[N];
  12. bool used[N];
  13. vector<int> dif, ans;
  14.  
  15. int main() {
  16.     freopen("dinner.in", "r", stdin);
  17.     freopen("dinner.out", "w", stdout);
  18.  
  19.     cin >> k >> m;
  20.     for (int i = 0; i < m; i++)
  21.         cin >> n[i];
  22.  
  23.     for (int i = 1; i < m; i++)
  24.         dif.pb(n[i - 1] / (n[i - 1] - n[i]));  
  25.  
  26.     sort(dif.begin(), dif.end());  
  27.     reverse(dif.begin(), dif.end());
  28.  
  29.     bool first = false;
  30.  
  31.     while (!first) {
  32.         first = true;
  33.         int last = 0;
  34.         for (int i = 0; i < dif.size(); i++) {
  35.             if (!used[i]) {
  36.                 if (first) {
  37.                     used[i] = true;
  38.                     last = dif[i];
  39.                     first = false;
  40.                     ans.pb(dif[i]);
  41.                 }
  42.                 else {
  43.                     if (last == dif[i] + 1) {
  44.                         used[i] = true;
  45.                         last = dif[i];
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.     }
  51.  
  52.     int prod = 1;
  53.     for (int i = 0; i < ans.size(); i++)
  54.         prod *= ans[i];
  55.  
  56.     if (ans.size() < k)
  57.         ans.pb(n[0] / prod);
  58.  
  59.     for (int i = ans.size(); i < k; i++)
  60.         ans.pb(1);
  61.  
  62.     for (int i = 0; i < ans.size(); i++)
  63.         cout << ans[i] << " ";
  64.     cout << endl;
  65.  
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement