➤ Problem Link : 1101C. Division and Union
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,l,r;
cin>>n;
vector<pair<pair<int,int>,int> > v;
for(int i=0;i<n;i++)
{
cin>>l>>r;
v.push_back(make_pair(make_pair(l,r),i));
}
sort(v.begin(),v.end());
int i=1;
int mx=v[0].first.second;
vector<int> ans(n);
for(i=1;i<n;i++)
{
if(v[i].first.first > mx)
break;
mx=max(mx,v[i].first.second);
}
if(i==n)
cout<<"-1\n";
else
{
for(int j=0;j<n;j++)
{
if(j<i)
ans[v[j].second]=1;
else
ans[v[j].second]=2;
}
for(int j=0;j<n;j++)
cout<<ans[j]<<" ";
cout<<"\n";
}
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
