Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define thicc(boi) boi.size()
  3. #define magiczne ios_base::sync_with_stdio(0);
  4. #define linijki cin.tie(NULL);
  5.  
  6. using namespace std;
  7.  
  8. struct basket{
  9.     double h, w, v;
  10. };
  11.  
  12. basket xd[10007];
  13.  
  14. bool cmp(basket i, basket j)
  15. {
  16.     return i.h > j.h;
  17. }
  18.  
  19. int main()
  20. {
  21.     magiczne linijki;
  22.     int n, g, sum = 0, res = 0;
  23.     cin >> n >> g;
  24.     for (int i = 0;i<n;i++)
  25.     {
  26.         cin >> xd[i].w >> xd[i].v;
  27.         if (xd[i].w == 0)
  28.             xd[i].h = LDBL_MAX;
  29.         else xd[i].h = xd[i].v/xd[i].w;
  30.         sum += xd[i].w;
  31.     }
  32.     if (sum < g)
  33.     {
  34.         cout << "NIE\n";
  35.         return 0;
  36.     }
  37.     sum -= g; //pozbycie się maksymalnie dużo tych pozostałych losów, by usunąć możliwie mało wygrywających
  38.     sort(xd, xd + n, cmp); //sortowanie po stosunku
  39.     for (int i = 0;i<n;i++)
  40.     {
  41.         if (xd[i].w <= sum)     //ciągły problem plecakowy tak działa chyba
  42.         {
  43.             sum -= xd[i].w;
  44.             xd[i].w = 0;
  45.             xd[i].v = 0;
  46.         }
  47.         else
  48.         {
  49.             xd[i].w -= sum;
  50.             break;
  51.         }
  52.     }
  53.     for (int i = 0;i<n;i++)
  54.         res += xd[i].v + xd[i].w; //zliczamy to, co zostało
  55.     cout << res;
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement