Advertisement
indjev99

Pirates

Oct 15th, 2015
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. const int MAXN=1000000;
  5. long long curr_offer[MAXN];
  6. struct offer
  7. {
  8.     int old_ind;
  9.     long long offer;
  10. };
  11. bool operator<(offer a, offer b)
  12. {
  13.     return a.offer<b.offer;
  14. }
  15. offer new_offer[MAXN];
  16. int n;
  17. long long k;
  18. void input()
  19. {
  20.     cin>>n>>k;
  21. }
  22. void output(int a)
  23. {
  24.     for (int i=0;i<a;i++)
  25.     {
  26.         cout<<i<<" "<<curr_offer[i]<<"\n";
  27.     }
  28. }
  29. void calc(int a)
  30. {
  31.     ++a;
  32.     int a2=a/2;
  33.     long long cur_g=k;
  34.     for (int i=0;i<a;++i)
  35.     {
  36.         new_offer[i].offer=curr_offer[i];
  37.         new_offer[i].old_ind=i;
  38.     }
  39.     sort(new_offer,new_offer+a-1);
  40.     for (int i=0;i<a2;++i)
  41.     {
  42.         ++new_offer[i].offer;
  43.         cur_g-=new_offer[i].offer;
  44.         if (cur_g<0) break;
  45.     }
  46.     if (cur_g<0)
  47.     {
  48.         curr_offer[a-1]=-1;
  49.         return;
  50.     }
  51.     for (int i=a2;i<a;i++)
  52.     {
  53.         new_offer[i].offer=0;
  54.     }
  55.     for (int i=0;i<a;i++)
  56.     {
  57.         curr_offer[new_offer[i].old_ind]=new_offer[i].offer;
  58.     }
  59.     curr_offer[a-1]=cur_g;
  60. }
  61. void solve()
  62. {
  63.     for (int i=0;i<n;i++)
  64.     {
  65.         calc(i);
  66.         /*cout<<endl;
  67.         output(i+1);
  68.         cout<<endl;*/
  69.     }
  70. }
  71. int main()
  72. {
  73.     input();
  74.     solve();
  75.     output(n);
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement