Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define FI(_n) for(int i = 0;i<(_n);i++)
- #define FJ(_n) for(int j = 0;j<(_n);j++)
- using namespace std;
- typedef long long ll;
- int main()
- {
- ios_base::sync_with_stdio(0);
- // ifstream cin("input.txt");
- // ofstream cout("output.txt");
- cin.tie(0);cout.tie(0);
- ll a,b;
- cin>>a>>b;
- ll l = 0, r = sqrtl(1ll*2*(a+b));
- while(l+1<r)
- {
- ll med = (l + r)>>1;
- ll i = med;
- ll bufa = a,bufb = b;
- while(1)
- {
- if(i==0) break;
- if(bufa<=bufb&&bufa>=i)
- {
- bufa-=i;
- i--;
- }
- else if(bufb>=i)
- {
- bufb-=i;
- i--;
- }
- else if(bufa>=i)
- {
- bufa-=i;
- i--;
- }
- else break;
- }
- if(i==0)
- {
- l = med;
- }
- else if(i<0) l = med + 1;
- else r = med - 1;
- }
- // check r
- ll i = r;
- vector<ll> ansa,ansb;
- ll bufa = a,bufb = b;
- while(1)
- {
- if(i==0) break;
- if(bufa<=bufb&&bufa>=i)
- {
- bufa-=i;
- ansa.push_back(i);
- i--;
- }
- else if(bufb>=i)
- {
- bufb-=i;
- ansb.push_back(i);
- i--;
- }
- else if(bufa>=i)
- {
- bufa-=i;
- ansa.push_back(i);
- i--;
- }
- else break;
- }
- if(i<=0)
- {
- cout<<ansa.size()<<"\n";
- FI(ansa.size()) cout<<ansa[i]<<" ";
- cout<<"\n"<<ansb.size()<<"\n";
- FI(ansb.size()) cout<<ansb[i]<<" ";
- return 0;
- }
- i = l;
- ansa.clear();
- ansb.clear();
- bufa = a;
- bufb = b;
- while(1)
- {
- if(i==0) break;
- if(bufa<=bufb&&bufa>=i)
- {
- bufa-=i;
- ansa.push_back(i);
- i--;
- }
- else if(bufb>=i)
- {
- bufb-=i;
- ansb.push_back(i);
- i--;
- }
- else if(bufa>=i)
- {
- bufa-=i;
- ansa.push_back(i);
- i--;
- }
- else break;
- }
- cout<<ansa.size()<<"\n";
- FI(ansa.size()) cout<<ansa[i]<<" ";
- cout<<"\n"<<ansb.size()<<"\n";
- FI(ansb.size()) cout<<ansb[i]<<" ";
- // cin.close();
- // cout.close();
- return 0;
- }
Add Comment
Please, Sign In to add comment