CF670C Cinema 题解

solve(?)

可以把所有出现的语言都统计一遍之后处理

我们看到数据范围高达\(10^9\),因此必须采用离散化来搞一下要不然吃不消

搞完之后就统计暴力搜然后比较就行了

然后就没有然后了

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
int n,m;
int tot;
int can[maxn],py[maxn],zm[maxn];// 听得懂,配音,字幕 
int sum[maxn*10],num[maxn*10];
int cnt[maxn*10];
int ans=1,ans1,ans2;
int t;
int query(int x)
{
    return lower_bound(sum+1,sum+1+t,x)-sum;
}
int main()
{
//	freopen("test16.in","r",stdin);
	cin >> n;
	for (int i=1;i<=n;i++)
	{
		cin >> can[i];
		sum[++tot]=can[i];
	}
	cin >> m;
	for (int i=1;i<=m;i++)
	{
		cin >> py[i];
		sum[++tot]=py[i];
	}
	for (int i=1;i<=m;i++)
	{
		cin >> zm[i];
		sum[++tot]=zm[i];
	}
	sort(sum+1,sum+1+tot);
	t=unique(sum+1,sum+1+tot)-sum-1;
	for (int i=1;i<=n;i++) cnt[query(can[i])]++;// 计数
	for (int i=1;i<=m;i++)
	{
		int u=cnt[query(py[i])];
		int v=cnt[query(zm[i])];
		if (u>ans1||(u == ans1&&v>ans2))// 优先更新py
		{
			ans=i;
			ans1=u;
			ans2=v;
		}
	}
	cout << ans << endl;
	return 0;
}

密码德我也不知道为什么之前开1e7才能过

然后爆了这个

posted @ 2026-03-22 09:25  msjing  阅读(15)  评论(0)    收藏  举报