#include <iostream>
#include <cstring>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
using namespace std;
int n;
const int maxn = 100010;
int arr[maxn];
int vis[maxn];
int cnt[maxn];
int stp[maxn];
int main()
{
int num;
freopen("1.txt","r",stdin);
while(scanf("%d",&n) != EOF)
{
queue<pair<int,int> > q;
memset(arr,0,sizeof(arr));
memset(vis,0,sizeof(vis));
memset(cnt,0,sizeof(cnt));
memset(stp,0,sizeof(stp));
for(int i=1;i<=n;i++)
{
scanf("%d",&num);
q.push(make_pair(num,0));
while(!q.empty())
{
int x = q.front().first;
int y = q.front().second;
q.pop();
if(x > 100003) continue;
if(vis[x] == i) continue;
vis[x] = i;
cnt[x] ++;
stp[x] += y;
q.push(make_pair(x*2,y+1));
q.push(make_pair(x / 2,y + 1));
}
}
int minstp = 0x3f3f3f3f;
for(int i=0;i<100010;i++)
{
if(cnt[i] == n && stp[i] < minstp)
{
minstp = stp[i];
}
}
printf("%d\n",minstp);
}
}
【CF】【Amr and Chemistry】
最新推荐文章于 2021-05-22 10:11:25 发布