QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#697732#6429. Let's Play Curling552Hz#WA 155ms7432kbC++141.8kb2024-11-01 15:31:272024-11-01 15:31:28

Judging History

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

  • [2024-11-01 15:31:28]
  • 评测
  • 测评结果:WA
  • 用时:155ms
  • 内存:7432kb
  • [2024-11-01 15:31:27]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const int N=200010;
const ll mod=998244353;
int n,m;
ll a[N],b[N];
void solve(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];a[i]*=2;
	}
	std::vector<ll> q;
	for(int i=1;i<=m;i++){
		cin>>b[i];b[i]*=2;
		q.push_back(b[i]);
	}
	ll ans=0;
	sort(q.begin(),q.end());
	q.push_back(1e17);
	sort(a+1,a+1+n);
	sort(b+1,b+1+m);
	for(int i=1;i<=n;i++){
		ll pos=a[i];
		ll w=lower_bound(q.begin(),q.end(),pos)-q.begin();
		ll dis=1e18;
		dis=min(dis,q[w]-pos);
		if(w!=0){
			w--;
		}
		dis=min(dis,pos-q[w]);
		//cout<<dis<<" ";
		int r=0,l=0;
		if(dis==0){
			continue;
		}
		for(int j=20;j>=0;j--){
			if((r+(1<<j))+i>n){
				continue;
			}
			if(a[(r+(1<<j))+i]-a[i]<dis){
				r+=(1<<j);
			}
		}
		for(int j=20;j>=0;j--){
			if(i-(l+(1<<j))<1){
				continue;
			}
			if(a[i]-a[i-(l+(1<<j))]<dis){
				l+=(1<<j);
			}
		}
		r=r+i;
		l=i-l;
		ans=max(ans,1ll*(r-l+1));
	}
	for(int i=1;i<n;i++){
		ll pos=(a[i]+a[i+1])/2;
		ll w=lower_bound(q.begin(),q.end(),pos)-q.begin();
		ll dis=1e18;
		dis=min(dis,q[w]-pos);
		if(w!=0){
			w--;
		}
		dis=min(dis,pos-q[w]);
		//cout<<dis<<" ";
		int r=0,l=0;
		if(dis==0){
			continue;
		}
		for(int j=20;j>=0;j--){
			if((r+(1<<j))+i>n){
				continue;
			}
			if(a[(r+(1<<j))+i]-a[i]<dis){
				r+=(1<<j);
			}
		}
		for(int j=20;j>=0;j--){
			if(i-(l+(1<<j))<1){
				continue;
			}
			if(a[i]-a[i-(l+(1<<j))]<dis){
				l+=(1<<j);
			}
		}
		r=r+i;
		l=i-l;
		ans=max(ans,1ll*(r-l+1));
	}
	if(ans==0){
		cout<<"Impossible"<<endl;
	}else{
		cout<<ans<<endl;
	}
	//cout<<ans<<endl;
}

int main(){
	std::ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int _=1;
	cin>>_;
	while(_--){
		solve();
	}
	return 0;
}

详细

Test #1:

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

input:

3
2 2
2 3
1 4
6 5
2 5 3 7 1 7
3 4 3 1 10
1 1
7
7

output:

2
3
Impossible

result:

ok 3 lines

Test #2:

score: -100
Wrong Answer
time: 155ms
memory: 7432kb

input:

5553
12 19
8 8 11 18 12 9 15 38 6 32 30 30
17 28 33 2 37 20 11 38 36 18 18 30 20 33 13 31 33 37 8
12 6
7 12 14 2 19 2 17 7 4 20 1 13
7 18 23 22 1 16
8 7
5 2 4 2 4 5 8 12
13 16 6 6 5 16 11
5 7
5 13 3 8 3
11 6 9 11 13 8 11
17 19
944782509 244117333 140979583 661724696 617847780 321687699 418677763 725...

output:

2
3
2
1
3
8
11
4
2
4
5
2
4
1
11
3
2
4
2
3
4
3
1
6
9
1
4
9
1
1
1
4
5
4
2
3
4
5
3
6
12
4
4
7
3
5
4
3
5
2
3
3
4
5
6
2
2
8
3
4
2
2
2
7
2
5
3
4
1
1
5
2
6
6
1
4
2
1
2
3
2
5
9
1
2
2
14
4
1
4
4
4
3
4
3
1
3
3
3
5
2
1
4
2
7
1
1
2
4
7
2
2
7
12
1
1
1
5
2
4
1
3
3
4
4
2
1
5
4
8
12
4
3
5
2
1
5
2
1
6
2
1
9
8
1
1
3
...

result:

wrong answer 1st lines differ - expected: '1', found: '2'