P8708 双指针 80pts求调
查看原帖
P8708 双指针 80pts求调
616733
Lysea楼主2022/11/29 11:20

WA 7、9.

题目传送门

#include<bits/stdc++.h>
#define N 10000005
#define int unsigned long long
using namespace std;
int n,K,l,r,k,tot,a[N],ans,cnt;
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>K;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	r=n;
	for(int i=1;i<=n;i++){
		if(r<i) break;
		k=a[i],tot=1;
		while(k) k/=10,tot*=10;
		while(r>i&&a[r]*tot+a[i]>K) r--;
		ans+=r-i;
	}
	l=1;
	for(int i=n;i;i--){
		if(i<l) break;
		k=a[i],tot=1;
		while(k) k/=10,tot*=10;
		while(l<i&&a[l]*tot+a[i]<=K) l++;
		l--;
		ans+=l;
	}
	cout<<ans;
	return 0;
} 
2022/11/29 11:20
加载中...