QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#821298#9331. Maximize the MinimumcwfxlhWA 123ms9764kbC++141.5kb2024-12-19 15:00:282024-12-19 15:00:28

Judging History

This is the latest submission verdict.

  • [2024-12-19 15:00:28]
  • Judged
  • Verdict: WA
  • Time: 123ms
  • Memory: 9764kb
  • [2024-12-19 15:00:28]
  • Submitted

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
int T,n,m,s,dp[500003][2],nxt[500003][2],nxt2[500003],lst[2],lft,rgt,mid,sump;
pair<pair<int,int>,int>p[500003];
void upd(int &x,int y){x=max(x,y);return;}
bool chk(int X){
	lst[0]=lst[1]=0;
	for(int i=n,j=n+1;i;i--){
		while(j-1>i&&p[j-1].first.first-p[i].first.first>=X){
			j--;
			lst[p[j].first.second]=j;
		}
		nxt2[i]=lst[p[i].first.second^1];
	}
	for(int i=1;i<=n;i++)dp[i][0]=p[i].second,dp[i][1]=0;
	for(int i=1;i<=n;i++){
		if(nxt[i][p[i].first.second]){
			upd(dp[nxt[i][p[i].first.second]][0],dp[i][0]+p[nxt[i][p[i].first.second]].second);
			upd(dp[nxt[i][p[i].first.second]][1],dp[i][1]+p[nxt[i][p[i].first.second]].second);
		}
		if(nxt2[i]){
			upd(dp[nxt2[i]][1],dp[i][0]+p[nxt2[i]].second);
			upd(dp[nxt2[i]][1],dp[i][1]+p[nxt2[i]].second);
		}
	}
	for(int i=1;i<=n;i++)if(sump-dp[i][1]<=s)return true;
	return false;
}
void sol(){
	sump=0;
	cin>>n>>m>>s;
	for(int i=1;i<=n+m;i++){
		cin>>p[i].first.first;
		p[i].first.second=(i>n);
	}
	for(int i=1;i<=n+m;i++)cin>>p[i].second;
	for(int i=1;i<=n+m;i++)sump+=p[i].second;
	n+=m;
	sort(p+1,p+n+1);
	lst[0]=lst[1]=0;
	for(int i=n;i;i--){
		nxt[i][0]=lst[0];
		nxt[i][1]=lst[1];
		lst[p[i].first.second]=i;
	}
	lft=0;
	rgt=1000000000000ll;
	while(lft<rgt){
		mid=((lft+rgt)/2)+1;
		if(chk(mid))lft=mid;
		else rgt=mid-1;
	}
	cout<<lft<<'\n';
	return;
}
signed main(){
	ios::sync_with_stdio(false);
	cin>>T;
	while(T--)sol();
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 9704kb

input:

2
1 4 10
15
1 6 9 13
8
3 1 2 4
5 4 4
-1 5 3 2 -4
-7 8 6 2
2 3 1 1 2
3 1 1 1

output:

14
3

result:

ok 2 number(s): "14 3"

Test #2:

score: -100
Wrong Answer
time: 123ms
memory: 9764kb

input:

40000
5 3 4
1 -5 -2 -5 4
-3 -4 -4
4 8 2 4 7
5 3 7
5 3 6
-4 -7 -4 -1 -7
-4 -4 -2
6 8 3 4 5
5 3 5
5 3 6
-1 2 3 -4 -1
-1 -2 -3
8 3 4 3 2
2 5 2
5 3 4
-5 -2 3 -1 2
-3 0 -2
6 5 1 1 6
7 8 7
5 3 4
0 0 1 -4 -2
-4 -4 -3
7 7 5 8 3
8 2 4
5 3 4
0 -4 -1 1 -6
-2 -5 -4
7 4 5 7 3
5 5 2
5 3 6
-4 -3 0 2 -4
-5 -4 -4
6 ...

output:

1
0
1
0
0
1
0
0
0
1
0
1
1
2
0
0
0
0
1
1
1
0
0
0
0
3
1
1
0
0
0
1
1
2
1
0
1
1
1
1
0
1
1
2
2
4
1
1
1
0
0
1
0
1
1
2
0
0
0
2
1
1
0
0
1
2
1
1
3
0
1
1
4
2
0
0
1
1
0
2
0
3
1
0
1
1
0
0
0
1
1
2
0
1
0
1
0
0
1
1
1
1
1
0
2
2
1
1
0
1
1
1
1
1
0
0
2
0
2
1
0
1
0
1
0
0
0
0
0
0
0
1
0
0
1
1
1
2
0
2
0
2
2
0
0
1
0
1
2
1
...

result:

wrong answer 709th numbers differ - expected: '2', found: '1000000000000'