Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<algorithm>
- using namespace std;
- const int MAXN=1000000;
- long long curr_offer[MAXN];
- struct offer
- {
- int old_ind;
- long long offer;
- };
- bool operator<(offer a, offer b)
- {
- return a.offer<b.offer;
- }
- offer new_offer[MAXN];
- int n;
- long long k;
- void input()
- {
- cin>>n>>k;
- }
- void output(int a)
- {
- for (int i=0;i<a;i++)
- {
- cout<<i<<" "<<curr_offer[i]<<"\n";
- }
- }
- void calc(int a)
- {
- ++a;
- int a2=a/2;
- long long cur_g=k;
- for (int i=0;i<a;++i)
- {
- new_offer[i].offer=curr_offer[i];
- new_offer[i].old_ind=i;
- }
- sort(new_offer,new_offer+a-1);
- for (int i=0;i<a2;++i)
- {
- ++new_offer[i].offer;
- cur_g-=new_offer[i].offer;
- if (cur_g<0) break;
- }
- if (cur_g<0)
- {
- curr_offer[a-1]=-1;
- return;
- }
- for (int i=a2;i<a;i++)
- {
- new_offer[i].offer=0;
- }
- for (int i=0;i<a;i++)
- {
- curr_offer[new_offer[i].old_ind]=new_offer[i].offer;
- }
- curr_offer[a-1]=cur_g;
- }
- void solve()
- {
- for (int i=0;i<n;i++)
- {
- calc(i);
- /*cout<<endl;
- output(i+1);
- cout<<endl;*/
- }
- }
- int main()
- {
- input();
- solve();
- output(n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement