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 |
|
|
| 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 |