Result: Accepted
Time: 203ms
Memory: 2528kB
#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<string>
#include<vector>
#include<set>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
using namespace std;
const int inf=0x3f3f3f3f;
typedef long long LL;
LL gcd(LL a,LL b){return a==0?b:gcd(b%a,a);}
//
//const int maxn=5e5+5;
//struct Tree
//{
// int l,r,maxx,sum;
//};
//
//Tree node[maxn<<2];
//int a[maxn];
//void PushUp(int i)
//{
// node[i].sum=node[i<<1].sum+node[(i<<1|1)].sum;
// node[i].maxx=max(node[i<<1].maxx,node[(i<<1|1)].maxx);
//}
//
//void build(int i,int l,int r)
//{
// node[i].l=l;node[i].r=r;
// if(l==r)
// {
// node[i].maxx=a[l];
// node[i].sum=a[l];
// return ;
// }
// int mid=(l+r)/2;
// build(i<<1,l,mid);
// build(i<<1|1,mid+1,r);
// PushUp(i);
//}
int n,k;
map<int,int>vis;
vector<int>ans;
int main()
{
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++)
{
int nowx;
scanf("%d",&nowx);
vis.clear();
bool tag=false;
for(int j=1;j<=k;j++)
{
int nex=ceil((double)sqrt(nowx));
nowx=nex*10;
if(vis[nowx]==1)
{
ans.push_back(nowx);
tag=true;
break;
}
else vis[nowx]=1;
}
if(!tag)ans.push_back(nowx);
}
for(int i=0;i<ans.size();i++)
{
if(i!=0)printf(" ");
printf("%d",ans[i]);
}
printf("\n");
return 0;
}