#4 #8 wa
查看原帖
#4 #8 wa
450743
XOOR楼主2024/6/19 17:17
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;

int n,k;
long long ans;
struct node{
	string s;
	long long x;
	int len;
	bool friend operator < (node a,node b){
		if(a.len==b.len) return a.s<b.s;
		else return a.len<b.len;
	}
}a[N];

int main(){
// 	freopen("in.in","r",stdin);
// 	freopen("out.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++){
		string s;cin>>s;
		long long x=0;
		for(int j=0;j<s.size();j++) x=x*10+s[j]-'0';
		a[i]=((node){s,x,s.size()});
	}
	sort(a+1,a+n+1);
//	for(int i=1;i<=n;i++) printf("%d %d\n",a[i].x,a[i].len);
	int l=1,r=n;
	while(l<r){
		long long sum=a[l].x*pow(10,a[r].len)+a[r].x;
		if(sum>k) r--;
		else if(sum<k){
			ans+=r-l;
			l++;
		}else ans+=r-1,l++,r--;
	}
	l=1,r=n;
	while(l<r){
		long long sum=a[l].x+a[r].x*pow(10,a[l].len);
		if(sum>k) r--;
		else if(sum<=k){
			ans+=r-l;
			l++;
		}else ans+=r-1,l++,r--;
	}
	printf("%lld",ans);
	return 0;
}
2024/6/19 17:17
加载中...