GastonFontenla

Timus: 1228 - Array

Jun 5th, 2016
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     long long n, s;
  8.     cin >> n >> s;
  9.     long long d[n];
  10.     long long r[n];
  11.     long long e[n]; ///Elegible
  12.     s--;
  13.     for(int i=0; i<n; i++)
  14.     {
  15.         e[i] = 1;
  16.         r[i] = 1;
  17.         cin >> d[i];
  18.         s-=d[i];
  19.     }
  20.  
  21.     ///Ahora los reparto como pueda
  22.  
  23.     if(s == 0)
  24.     {
  25.         for(int i=0; i<n; i++)
  26.             cout << 1 << " ";
  27.         cout << endl;
  28.         return 0;
  29.     }
  30.  
  31.     for(int i=0; i<n; i++)
  32.     {
  33.         int mayor = 1;
  34.         int pos = 0;
  35.         for(int j=0; j<n; j++)
  36.         {
  37.             if(e[j] && mayor < d[j])
  38.             {
  39.                 mayor = d[j];
  40.                 pos = j;
  41.             }
  42.         }
  43.  
  44.         e[pos] = false;
  45.  
  46.         while(r[i] < 1000 && s >= d[pos])
  47.         {
  48.             r[i]++;
  49.             s-=d[pos];
  50.         }
  51.     }
  52.  
  53.     if(s == 0)
  54.     {
  55.         for(int i=0; i<n; i++)
  56.             cout << r[i] << " ";
  57.         cout << endl;
  58.         return 0;
  59.     }
  60.  
  61.     ///Busco la pos del 1
  62.  
  63.     for(int i=0; i<n; i++)
  64.     {
  65.         if(d[i] == 1)
  66.         {
  67.             long long canTake = min(1000-r[i], s);
  68.             s -= canTake;
  69.             r[i] += canTake;
  70.         }
  71.     }
  72.  
  73.     for(int i=0; i<n; i++)
  74.         cout << r[i] << " ";
  75.     cout << endl;
  76.    
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment