QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#865097#9730. Elevator IItsaiWA 52ms5968kbC++141.7kb2025-01-21 14:48:582025-01-21 14:48:58

Judging History

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

  • [2025-01-21 14:48:58]
  • 评测
  • 测评结果:WA
  • 用时:52ms
  • 内存:5968kb
  • [2025-01-21 14:48:58]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int N=200005;
struct node{
	ll l;
	ll r;
	int p;
	int okp;//上一个走谁
	ll okl;//之前最左边
}a[N];
bool cmp(node n1,node n2){
	if(n1.r!=n2.r){
		return n1.r>n2.r;
	}
	return  n1.l>n2.l;
}
ll sum[N]={0};
bool vis[N]={0};
void solve(){
	int n;
	ll f;
	scanf("%d %lld",&n,&f);
	ll all=0;
	for(int i=1;i<=n;i++){
		vis[i]=0;
		sum[i]=0;
		ll x,y;
		scanf("%lld %lld",&x,&y);
		a[i]={x,y,i,-1,y};
		all+=(y-x);
	}
	sort(a+1,a+1+n,cmp);
	sum[a[1].p]=0;
	for(int i=2;i<=n;i++){
		if(a[i].r>=a[i-1].l){//往上无伤
			if(a[i-1].l<a[i-1].okl){//左边更小
				a[i].okl=a[i-1].l;
				a[i].okp=i-1;
			}else{
				a[i].okl=a[i-1].okl;
				a[i].okp=a[i-1].okp;
			}
			sum[a[i].p]=sum[a[i-1].p];
		}else{//往上有伤
			if(a[i-1].l<a[i-1].okl){//左边更小
				a[i].okl=a[i-1].l;
				a[i].okp=i-1;			
				sum[a[i].p]=sum[a[i-1].p]+a[i-1].l-a[i].r;
			}else{
				a[i].okl=a[i-1].okl;
				a[i].okp=a[i-1].okp;
				sum[a[i].p]=sum[a[i-1].okp]+max(0ll,a[i-1].okl-a[i].r);
			}
		}
	}
	ll mini=1e17;
	int st=-1;
	for(int i=1;i<=n;i++){
		if(max(0ll,a[i].l-f)+sum[a[i].p]<mini){
			mini=max(0ll,a[i].l-f)+sum[a[i].p];
			st=i;//逻辑标号
		}
	}
	all+=mini;
	printf("%lld\n",all);
	int s=0;
	for(int i=st;i!=-1;i=a[i].okp){
		if(s==1){
			printf(" ");
		}
		s=1;
		printf("%d",a[i].p);
		vis[a[i].p]=1;
	}
	for(int i=1;i<=n;i++){
		if(!vis[a[i].p]){
			if(s==1){
				printf(" ");
			}
			s=1;
			printf("%d",a[i].p);
			vis[a[i].p]=1;
		}
	}
}
int main(){
	int t=1;
	scanf("%d",&t);
	while(t--){
		solve();
		printf("\n");
	}
	return 0;
}
/*
6 1
5 10
1 9
1 8
2 3
4 7
6 7
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

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

output:

11
3 4 1 2
5
2 1

result:

ok ok 2 cases (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 52ms
memory: 5968kb

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
9 18 4 10 1 6 2 14 11 12 17 19 13 3 5 16 15 7 8
194
5 4 2 6 1 3
397
4 11 1 5 12 10 13 14 8 16 2 6 15 9 7 3
733
7 3 1 10 8 6 4 17 5 16 13 11 15 12 18 14 9 19 2
244
3 11 10 5 6 2 8 12 4 14 9 1 15 13 7
422
18 1 6 11 10 2 7 13 9 4 12 20 14 5 15 8 19 16 3 17
104
4 1 3 2
187
4 1 3 8 2 6 7 5 9 10
117
2...

result:

wrong answer Participant declares the cost to be 124, but the plan actually costs 125 (test case 13)