Submission #60704166


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

using ll=long long;

#define rng(i,a,b) for(int i=int(a);i<int(b);i++)
#define rep(i,b) rng(i,0,b)
#define gnr(i,a,b) for(int i=int(b)-1;i>=int(a);i--)
#define per(i,b) gnr(i,0,b)
#define pb push_back
#define eb emplace_back
#define a first
#define b second
#define bg begin()
#define ed end()
#define all(x) x.bg,x.ed
#define si(x) int(x.size())
#ifdef LOCAL
#define dmp(x) cerr<<__LINE__<<" "<<#x<<" "<<x<<endl
#else
#define dmp(x) void(0)
#endif

template<class t,class u> bool chmax(t&a,u b){if(a<b){a=b;return true;}else return false;}
template<class t,class u> bool chmin(t&a,u b){if(b<a){a=b;return true;}else return false;}

template<class t> using vc=vector<t>;
template<class t> using vvc=vc<vc<t>>;

#define INF 10000000
#define BT 512*1024*2
using P=pair<int,int>;
using PP=pair<P,int>;
using vi=vc<int>;

struct segtree1{
	int seg[BT],add[BT];
	int mum;

	void init(int n){
		mum=1;
		while(mum<n) mum<<=1;
		for(int i=0;i<mum*2;i++){
			seg[i]=INF;
			add[i]=0;
		}
	}
	void update(int a,int b,int k,int l,int r,int v){
		if(b<=l||r<=a) return;
		if(a<=l&&r<=b){
			seg[k]+=v;
			add[k]+=v;
		}
		else{
			update(a,b,k*2+1,l,(l+r)/2,v);
			update(a,b,k*2+2,(l+r)/2,r,v);
			seg[k]=min(seg[k*2+1],seg[k*2+2])+add[k];
		}
	}
	void update(int a,int b,int v){
		update(a,b,0,0,mum,v);
	}
	int get(int a,int b,int k,int l,int r){
		if(b<=l||r<=a) return INF;
		if(a<=l&&r<=b) return seg[k];
		else{
			int vl=get(a,b,k*2+1,l,(l+r)/2);
			int vr=get(a,b,k*2+2,(l+r)/2,r);
			return min(vl,vr)+add[k];
		}
	}
	int get(int a,int b){
		return get(a,b,0,0,mum);
	}
	int get(){
		return seg[0];
	}
}smn;
struct segtree2{
	int seg[BT],add[BT];
	int mum;

	void init(int n){
		mum=1;
		while(mum<n) mum<<=1;
		for(int i=0;i<mum*2;i++){
			seg[i]=-INF;
			add[i]=0;
		}
	}
	void update(int a,int b,int k,int l,int r,int v){
		if(b<=l||r<=a) return;
		if(a<=l&&r<=b){
			seg[k]+=v;
			add[k]+=v;
		}
		else{
			update(a,b,k*2+1,l,(l+r)/2,v);
			update(a,b,k*2+2,(l+r)/2,r,v);
			seg[k]=max(seg[k*2+1],seg[k*2+2])+add[k];
		}
	}
	void update(int a,int b,int v){
		update(a,b,0,0,mum,v);
	}
	int get(int a,int b,int k,int l,int r){
		if(b<=l||r<=a) return -INF;
		if(a<=l&&r<=b) return seg[k];
		else{
			int vl=get(a,b,k*2+1,l,(l+r)/2);
			int vr=get(a,b,k*2+2,(l+r)/2,r);
			return max(vl,vr)+add[k];
		}
	}
	int get(int a,int b){
		return get(a,b,0,0,mum);
	}
	int get(){
		return seg[0];
	}
}smx;
struct segtree3{
	int seg[BT];
	int mum;

	void init(int n){
		mum=1;
		while(mum<n) mum<<=1;
		for(int i=0;i<mum*2;i++) seg[i]=0;
	}
	void add(int k,int x){
		k+=mum-1;
		seg[k]=x;
		while(k>0){
			k=(k-1)/2;
			seg[k]=seg[k*2+1]+seg[k*2+2];
		}
	}
	int get(int a,int b,int k,int l,int r){
		if(b<=l||r<=a) return 0;
		if(a<=l&&r<=b) return seg[k];
		else{
			int vl=get(a,b,k*2+1,l,(l+r)/2);
			int vr=get(a,b,k*2+2,(l+r)/2,r);
			return vl+vr;
		}
	}
	int get(int a,int b){
		return get(a,b,0,0,mum);
	}
}scl,scr;

void solve(){
	int n;
	cin>>n;
	vc<int> L(n),R(n);
	int vl=0,vr=180005;
	vc<P> idl(n),idr(n);
	for(int i=0;i<n;i++){
		cin>>L[i]>>R[i];
		idl[i]=P(L[i],i);
		idr[i]=P(R[i],i);
	}
	sort(idl.begin(),idl.end());
	sort(idr.begin(),idr.end());

	smn.init(n+5);
	smx.init(n+5);
	scl.init(n+5);
	scr.init(n+5);
	int S=vr-1,T=vl;

	vc<int> al(n),ar(n);
	for(int i=0;i<n;i++){
		int p=lower_bound(idl.begin(),idl.end(),P(L[i],i))-idl.begin();
		int q=lower_bound(idr.begin(),idr.end(),P(R[i],i))-idr.begin();

		scl.add(p,1);
		scr.add(q,1);

		int c=scr.get(0,q+1);
		smn.update(q,q+1,R[i]-c-smn.get(q,q+1));
		smn.update(q+1,n+1,-1);

		int d=scl.get(p,n);
		smx.update(p,p+1,L[i]+d-smx.get(p,p+1));
		if(p>0) smx.update(0,p,1);

		int S=smn.get(),T=smx.get();
		if(T-S<=i) S=T-i-1;
		al[i]=S,ar[i]=T;
	}

	vc<vc<P>> dat(vr);
	for(int i=0;i<n;i++) dat[L[i]].pb(P(R[i],i));
	auto check=[&](int d)->bool{
		priority_queue <int,vector <int>, greater <int> > que;
		for(int i=0;i<vr;i++){
			if(!que.empty()){
				int t=que.top();que.pop();
				if(t<i) return false;
			}
			for(int j=0;j<dat[i].size();j++){
				if(dat[i][j].b<d) que.push(dat[i][j].a);
			}
		}
		if(!que.empty()) return false;
		return true;
	};

	int s=0,t=n+1;
	while(t-s>1){
		int d=(s+t)/2;
		if(check(d)) s=d;
		else t=d;
	}
	for(int i=0;i<s;i++) cout<<al[i]<<" "<<ar[i]<<endl;
	for(int i=s;i<n;i++) cout<<"Impossible"<<endl;
}
int main(){
	cin.tie(0);
	ios::sync_with_stdio(0);
	cout<<fixed<<setprecision(20);
	int T=1;
	while(T--) solve();
}

Submission Info

Submission Time
Task B - Meetings
User yutaka1999
Language C++ 23 (Clang 16.0.6)
Score 1000
Code Size 4696 Byte
Status AC
Exec Time 920 ms
Memory 30804 KiB

Compile Error

./Main.cpp:203:17: warning: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned long') [-Wsign-compare]
                        for(int j=0;j<dat[i].size();j++){
                                    ~^~~~~~~~~~~~~~
./Main.cpp:171:6: warning: unused variable 'S' [-Wunused-variable]
        int S=vr-1,T=vl;
            ^
./Main.cpp:171:13: warning: unused variable 'T' [-Wunused-variable]
        int S=vr-1,T=vl;
                   ^
3 warnings generated.

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1000 / 1000
Status
AC × 5
AC × 160
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt
All 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt, 02-23.txt, 02-24.txt, 02-25.txt, 02-26.txt, 02-27.txt, 02-28.txt, 02-29.txt, 02-30.txt, 02-31.txt, 02-32.txt, 02-33.txt, 02-34.txt, 02-35.txt, 02-36.txt, 02-37.txt, 02-38.txt, 02-39.txt, 02-40.txt, 02-41.txt, 02-42.txt, 02-43.txt, 02-44.txt, 02-45.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 05-01.txt, 05-02.txt, 05-03.txt, 05-04.txt, 05-05.txt, 05-06.txt, 05-07.txt, 05-08.txt, 05-09.txt, 05-10.txt, 05-11.txt, 05-12.txt, 05-13.txt, 05-14.txt, 05-15.txt, 05-16.txt, 05-17.txt, 05-18.txt, 05-19.txt, 06-01.txt, 06-02.txt, 06-03.txt, 06-04.txt, 07-01.txt, 07-02.txt, 07-03.txt, 07-04.txt, 07-05.txt, 07-06.txt, 07-07.txt, 07-08.txt, 07-09.txt, 07-10.txt, 07-11.txt, 08-01.txt, 08-02.txt, 08-03.txt, 08-04.txt, 08-05.txt, 09-01.txt, 09-02.txt, 09-03.txt, 10-01.txt, 10-02.txt, 10-03.txt, 10-04.txt, 10-05.txt, 10-06.txt, 10-07.txt, 11-01.txt, 11-02.txt, 11-03.txt, 11-04.txt, 11-05.txt, 11-06.txt, 11-07.txt, 11-08.txt, 11-09.txt, 11-10.txt, 11-11.txt, 11-12.txt, 11-13.txt, 11-14.txt, 11-15.txt, 11-16.txt, 11-17.txt, 11-18.txt, 11-19.txt, 11-20.txt, 11-21.txt, 11-22.txt, 11-23.txt, 11-24.txt, 12-01.txt, 12-02.txt, 12-03.txt, 12-04.txt, 12-05.txt, 12-06.txt, 12-07.txt, 12-08.txt, 12-09.txt, 12-10.txt, 12-11.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt
Case Name Status Exec Time Memory
01-01.txt AC 3 ms 7256 KiB
01-02.txt AC 3 ms 7260 KiB
01-03.txt AC 3 ms 7088 KiB
01-04.txt AC 3 ms 7312 KiB
01-05.txt AC 3 ms 7288 KiB
01-06.txt AC 3 ms 7240 KiB
01-07.txt AC 3 ms 7264 KiB
01-08.txt AC 3 ms 7312 KiB
01-09.txt AC 3 ms 7308 KiB
01-10.txt AC 4 ms 7208 KiB
02-01.txt AC 3 ms 7264 KiB
02-02.txt AC 3 ms 7212 KiB
02-03.txt AC 3 ms 7240 KiB
02-04.txt AC 4 ms 7244 KiB
02-05.txt AC 3 ms 7212 KiB
02-06.txt AC 3 ms 7268 KiB
02-07.txt AC 3 ms 7212 KiB
02-08.txt AC 3 ms 7328 KiB
02-09.txt AC 3 ms 7256 KiB
02-10.txt AC 3 ms 7212 KiB
02-11.txt AC 3 ms 7244 KiB
02-12.txt AC 3 ms 7308 KiB
02-13.txt AC 3 ms 7252 KiB
02-14.txt AC 4 ms 7256 KiB
02-15.txt AC 4 ms 7312 KiB
02-16.txt AC 3 ms 7116 KiB
02-17.txt AC 3 ms 7220 KiB
02-18.txt AC 3 ms 7300 KiB
02-19.txt AC 4 ms 7196 KiB
02-20.txt AC 3 ms 7208 KiB
02-21.txt AC 3 ms 7236 KiB
02-22.txt AC 3 ms 7252 KiB
02-23.txt AC 4 ms 7240 KiB
02-24.txt AC 3 ms 7224 KiB
02-25.txt AC 3 ms 7260 KiB
02-26.txt AC 4 ms 7248 KiB
02-27.txt AC 3 ms 7244 KiB
02-28.txt AC 4 ms 7308 KiB
02-29.txt AC 3 ms 7220 KiB
02-30.txt AC 4 ms 7244 KiB
02-31.txt AC 876 ms 29228 KiB
02-32.txt AC 904 ms 29368 KiB
02-33.txt AC 899 ms 29364 KiB
02-34.txt AC 886 ms 29364 KiB
02-35.txt AC 885 ms 29308 KiB
02-36.txt AC 880 ms 29340 KiB
02-37.txt AC 890 ms 29316 KiB
02-38.txt AC 895 ms 29364 KiB
02-39.txt AC 878 ms 29348 KiB
02-40.txt AC 864 ms 29348 KiB
02-41.txt AC 888 ms 29260 KiB
02-42.txt AC 887 ms 29160 KiB
02-43.txt AC 884 ms 29320 KiB
02-44.txt AC 601 ms 28040 KiB
02-45.txt AC 460 ms 27140 KiB
03-01.txt AC 490 ms 28508 KiB
03-02.txt AC 419 ms 27548 KiB
03-03.txt AC 489 ms 28240 KiB
03-04.txt AC 454 ms 27540 KiB
03-05.txt AC 441 ms 27568 KiB
03-06.txt AC 443 ms 27596 KiB
03-07.txt AC 503 ms 27344 KiB
03-08.txt AC 556 ms 27344 KiB
03-09.txt AC 502 ms 27672 KiB
03-10.txt AC 551 ms 27236 KiB
04-01.txt AC 608 ms 28460 KiB
04-02.txt AC 291 ms 17820 KiB
04-03.txt AC 454 ms 30804 KiB
04-04.txt AC 223 ms 19184 KiB
04-05.txt AC 508 ms 28076 KiB
04-06.txt AC 442 ms 30752 KiB
05-01.txt AC 597 ms 28364 KiB
05-02.txt AC 808 ms 28684 KiB
05-03.txt AC 562 ms 28388 KiB
05-04.txt AC 809 ms 28680 KiB
05-05.txt AC 651 ms 28300 KiB
05-06.txt AC 752 ms 28612 KiB
05-07.txt AC 808 ms 28664 KiB
05-08.txt AC 639 ms 28624 KiB
05-09.txt AC 652 ms 28560 KiB
05-10.txt AC 649 ms 28684 KiB
05-11.txt AC 523 ms 28648 KiB
05-12.txt AC 794 ms 28780 KiB
05-13.txt AC 745 ms 28860 KiB
05-14.txt AC 764 ms 28776 KiB
05-15.txt AC 795 ms 28856 KiB
05-16.txt AC 605 ms 28648 KiB
05-17.txt AC 631 ms 28596 KiB
05-18.txt AC 616 ms 28632 KiB
05-19.txt AC 614 ms 28624 KiB
06-01.txt AC 614 ms 30488 KiB
06-02.txt AC 456 ms 30544 KiB
06-03.txt AC 620 ms 30536 KiB
06-04.txt AC 454 ms 30476 KiB
07-01.txt AC 440 ms 30480 KiB
07-02.txt AC 439 ms 30424 KiB
07-03.txt AC 439 ms 30476 KiB
07-04.txt AC 439 ms 30484 KiB
07-05.txt AC 245 ms 19596 KiB
07-06.txt AC 61 ms 10472 KiB
07-07.txt AC 632 ms 30412 KiB
07-08.txt AC 628 ms 30408 KiB
07-09.txt AC 626 ms 30500 KiB
07-10.txt AC 319 ms 19656 KiB
07-11.txt AC 74 ms 10372 KiB
08-01.txt AC 628 ms 29088 KiB
08-02.txt AC 612 ms 28248 KiB
08-03.txt AC 598 ms 27656 KiB
08-04.txt AC 592 ms 27152 KiB
08-05.txt AC 577 ms 27300 KiB
09-01.txt AC 647 ms 28704 KiB
09-02.txt AC 640 ms 28796 KiB
09-03.txt AC 641 ms 28732 KiB
10-01.txt AC 821 ms 29268 KiB
10-02.txt AC 824 ms 29308 KiB
10-03.txt AC 829 ms 29344 KiB
10-04.txt AC 830 ms 29280 KiB
10-05.txt AC 805 ms 29296 KiB
10-06.txt AC 808 ms 29196 KiB
10-07.txt AC 811 ms 29296 KiB
11-01.txt AC 799 ms 28852 KiB
11-02.txt AC 806 ms 28876 KiB
11-03.txt AC 801 ms 28868 KiB
11-04.txt AC 225 ms 13652 KiB
11-05.txt AC 175 ms 13596 KiB
11-06.txt AC 213 ms 13724 KiB
11-07.txt AC 509 ms 30488 KiB
11-08.txt AC 514 ms 30440 KiB
11-09.txt AC 517 ms 30356 KiB
11-10.txt AC 197 ms 13244 KiB
11-11.txt AC 201 ms 13224 KiB
11-12.txt AC 196 ms 12932 KiB
11-13.txt AC 920 ms 28844 KiB
11-14.txt AC 885 ms 28940 KiB
11-15.txt AC 882 ms 28880 KiB
11-16.txt AC 202 ms 13644 KiB
11-17.txt AC 201 ms 13576 KiB
11-18.txt AC 222 ms 13656 KiB
11-19.txt AC 623 ms 30484 KiB
11-20.txt AC 620 ms 30440 KiB
11-21.txt AC 616 ms 30548 KiB
11-22.txt AC 208 ms 13224 KiB
11-23.txt AC 210 ms 13044 KiB
11-24.txt AC 209 ms 13216 KiB
12-01.txt AC 156 ms 13320 KiB
12-02.txt AC 156 ms 13324 KiB
12-03.txt AC 157 ms 13028 KiB
12-04.txt AC 156 ms 12988 KiB
12-05.txt AC 157 ms 13016 KiB
12-06.txt AC 157 ms 13056 KiB
12-07.txt AC 158 ms 13116 KiB
12-08.txt AC 161 ms 13100 KiB
12-09.txt AC 164 ms 13044 KiB
12-10.txt AC 164 ms 13032 KiB
12-11.txt AC 167 ms 12984 KiB
sample-01.txt AC 3 ms 7268 KiB
sample-02.txt AC 3 ms 7252 KiB
sample-03.txt AC 3 ms 7328 KiB
sample-04.txt AC 4 ms 7244 KiB
sample-05.txt AC 4 ms 7328 KiB