题目链接:点击打开链接
有A和B两组人,现在用A和B里挑3个人合成一组,可以(AAB)或(BBA),问最多可以组多少组。
贪心,如果A组人较多,则A组出两个,否则B组出两个。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define N 100010
int pos[N],icon[N];
#define LL long long
int main()
{
int n,m,k,t,tmp,pre;
LL ans=0;
cin>>n>>m>>k;
for(int i = 0;i<n;i++){
scanf("%d",&t);
pos[i] = t;
icon[t] = i;
}
for(int i = 0;i<m;i++){
scanf("%d",&t);
tmp = icon[t];
if(tmp == 0) ans++;
else{
ans+=tmp/k + 1;
pre = pos[tmp - 1];
icon[pre] = tmp;
icon[t] = tmp - 1;
pos[icon[pre]] = pre;
pos[icon[t]] = t;
}
}
printf("%I64d\n",ans);
return 0;
}