QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#852792#9730. Elevator IIucup-team3161#AC ✓61ms9256kbC++143.3kb2025-01-11 14:02:542025-01-11 14:02:55

Judging History

你现在查看的是最新测评结果

  • [2025-01-11 14:02:55]
  • 评测
  • 测评结果:AC
  • 用时:61ms
  • 内存:9256kb
  • [2025-01-11 14:02:54]
  • 提交

answer

// what is matter? never mind. 
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC target("sse,sse2,sse3,sse4,popcnt,abm,mmx,avx,avx2")
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
#define ll long long
//#define ull unsigned long long
#define int long long
#define SZ(x) ((int)((x).size()))
#define ALL(x) (x).begin(),(x).end()
using namespace std;
inline int read()
{
	char c=getchar();int x=0;bool f=0;
	for(;!isdigit(c);c=getchar())f^=!(c^45);
	for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
	return f?-x:x;
}

#define mod 998244353
struct modint{
	unsigned int x;
	modint(int o=0){x=o;}
	modint &operator = (int o){return x=o,*this;}
	modint &operator +=(modint o){return x=x+o.x>=mod?x+o.x-mod:x+o.x,*this;}
	modint &operator -=(modint o){return x=x<o.x?x-o.x+mod:x-o.x,*this;}
	modint &operator *=(modint o){return x=1ll*x*o.x%mod,*this;}
	modint &operator ^=(int b){
		modint a=*this,c=1;
		for(;b;b>>=1,a*=a)if(b&1)c*=a;
		return x=c.x,*this;
	}
	modint &operator /=(modint o){return *this *=o^=mod-2;}
	friend modint operator +(modint a,modint b){return a+=b;}
	friend modint operator -(modint a,modint b){return a-=b;}
	friend modint operator *(modint a,modint b){return a*=b;}
	friend modint operator /(modint a,modint b){return a/=b;}
	friend modint operator ^(modint a,int b){return a^=b;}
	friend bool operator ==(modint a,modint b){return a.x==b.x;}
	friend bool operator !=(modint a,modint b){return a.x!=b.x;}
	bool operator ! () {return !x;}
	modint operator - () {return x?mod-x:0;}
	bool operator <(const modint&b)const{return x<b.x;}
};
inline modint qpow(modint x,int y){return x^y;}

vector<modint> fac,ifac,iv;
inline void initC(int n)
{
	if(iv.empty())fac=ifac=iv=vector<modint>(2,1);
	int m=iv.size(); ++n;
	if(m>=n)return;
	iv.resize(n),fac.resize(n),ifac.resize(n);
	For(i,2,n-1)fac[i]=fac[i-1]*i;
	ifac[n-1]=1/fac[n-1];
	Rep(i,n-2,0)ifac[i]=ifac[i+1]*(i+1),iv[i+1]=ifac[i+1]*fac[i];
}
inline modint C(int n,int m){
	if(m<0||n<m)return 0;
	return initC(n),fac[n]*ifac[m]*ifac[n-m];
}
inline modint sign(int n){return (n&1)?(mod-1):(1);}

#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<int,int>pii;
typedef vector<int>vi;

#define maxn 1000005
#define inf 0x3f3f3f3f

int n,m;
struct node{
	int l,r,id;
}a[maxn];
bool vis[maxn];
void work()
{
	n=read(),m=read();
	For(i,1,n)a[i].l=read(),a[i].r=read(),a[i].id=i,vis[i]=0;
	sort(a+1,a+n+1,[&](node x,node y){
		return x.l<y.l;
	});
	int sum=0;
	int now=m;
	vi out;
	For(i,1,n){
		if(vis[a[i].id]) continue;
		if(a[i].l<=now && a[i].r>=now) {
			out.pb(a[i].id),vis[a[i].id]=1;
			now=a[i].r;
		}
		if(a[i].l>now){
			out.pb(a[i].id),vis[a[i].id]=1;
			sum+=a[i].l-now;
			now=a[i].r;
		}
	}
//	cout<<"NOW "<<now<<endl;
//	for(auto x:out)cout<<x<<" "; cout<<" out\n";
	sort(a+1,a+n+1,[&](node x,node y){
		return x.r>y.r;
	});
	For(i,1,n){
		if(vis[a[i].id]) continue;
		assert(a[i].l<=now);
		out.pb(a[i].id);
		now=a[i].r;
	}
	For(i,1,n)sum+=a[i].r-a[i].l;
	cout<<sum<<"\n";
	for(int x:out)cout<<x<<" "; cout<<"\n";
}

signed main()
{
	int T=read();
	while(T--)work();
	return 0;
}
/*

*/

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3556kb

input:

2
4 2
3 6
1 3
2 7
5 6
2 5
2 4
6 8

output:

11
2 3 1 4 
5
2 1 

result:

ok ok 2 cases (2 test cases)

Test #2:

score: 0
Accepted
time: 31ms
memory: 5668kb

input:

6100
19 52
51 98
2 83
40 58
96 99
39 55
72 94
15 17
4 15
48 99
2 99
77 78
35 77
44 62
79 81
30 31
1 48
48 76
68 99
60 66
6 19
44 53
64 92
17 28
67 98
9 99
40 65
16 27
99 100
15 56
4 6
24 97
84 96
47 49
37 38
77 79
13 40
13 92
71 100
47 93
90 91
72 81
15 48
32 71
19 17
95 99
10 23
18 100
90 93
52 92
...

output:

524
2 10 9 18 4 1 6 14 11 12 17 19 13 3 5 16 15 7 8 
194
5 4 2 6 1 3 
397
9 10 4 11 1 5 12 13 14 8 16 2 6 15 7 3 
733
2 15 7 3 1 10 8 6 4 17 5 16 13 11 12 18 14 9 19 
244
3 11 10 5 6 2 8 12 4 14 9 1 15 13 7 
422
17 18 1 6 11 2 10 7 13 9 4 12 20 14 5 15 19 8 16 3 
104
3 4 1 2 
187
4 1 3 8 2 6 7 5 9 1...

result:

ok ok 6100 cases (6100 test cases)

Test #3:

score: 0
Accepted
time: 61ms
memory: 9256kb

input:

3
100000 9859
150464 951410
637107 897197
236268 936879
353406 403927
511229 999416
861211 958428
186246 446149
162388 805753
449016 817386
147119 604340
579101 926848
958992 987299
859662 907007
507058 690951
719158 856587
789149 927957
691705 707085
694110 845505
192759 616586
905489 935507
937041...

output:

24903933702
93759 83950 38185 82687 92856 81216 75880 21862 39096 65801 33773 51617 65474 94722 13509 12929 87576 15727 17341 11792 2606 27729 50887 55052 48077 72396 33512 98442 16861 69859 42944 15997 66434 56377 59405 7904 41121 40847 9663 68634 19087 34470 50759 37212 10095 24530 6562 23408 7045...

result:

ok ok 3 cases (3 test cases)

Test #4:

score: 0
Accepted
time: 43ms
memory: 9140kb

input:

3
100000 932101
80818 80823
538842 538844
406812 406818
625053 625054
511066 511073
667363 667365
527022 527023
621329 621331
855832 855852
796168 796169
268927 268929
650891 650895
312793 312794
873256 873260
424896 424929
266271 266272
902201 902209
842863 842864
361599 361610
647851 647855
148132...

output:

986597
61385 82641 30352 69618 20783 58790 61591 73429 47387 19378 23379 41138 11990 19101 41160 74602 34312 64927 10872 13641 70364 15412 20274 12832 42804 83583 94175 77157 82305 60601 21546 50908 21059 98950 61273 47916 86818 9311 25865 53332 48329 56510 28523 78038 4763 42097 44294 29951 79449 2...

result:

ok ok 3 cases (3 test cases)

Test #5:

score: 0
Accepted
time: 51ms
memory: 8080kb

input:

3
100000 375117879
637628712 637644704
788784579 788792294
804734775 804734822
332639566 332642798
143113598 143114045
132119073 132122341
684483097 684513821
484676670 484678332
661667340 661668818
777865379 777870254
142495696 142495995
101735856 101740588
906481102 906481965
360087766 360091064
1...

output:

872643717
43549 34676 31878 49124 12077 8140 13605 76831 10834 96613 83688 46028 65944 14511 56152 84791 1759 60404 73244 38124 93732 74294 8688 64153 56500 39213 27938 93350 21680 36926 8295 8832 69685 1025 22233 14796 83881 83105 72820 95432 90168 29163 20496 4937 51441 96515 46657 82775 90528 380...

result:

ok ok 3 cases (3 test cases)

Extra Test:

score: 0
Extra Test Passed