You are on page 1of 2

#include<bits/stdc++.

h>
using namespace std;
#define int long long
vector<int> tov(int i,int t){
vector<int>n;
do{
n.push_back(i%t);
i=i-i%t;
i/=t;
}while(i!=0);
return n;
}
bool euq(vector<int>t,vector<int>e){
int tt=0;
int ee=0;
for(vector<int>::iterator it=t.begin();it!=t.end();it++){
tt+=*it;
}
for(vector<int>::iterator it=e.begin();it!=e.end();it++){
ee+=*it;
}
return tt==ee;
}
signed main(){
int count=0;
for(int i=1;;i++){
vector<int>t=tov(i,2);
vector<int>e=tov(i,8);
if(euq(t,e)){
count++;
if(count==23){
cout<<i<<endl;
break;
}
}
}
return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int n;
cin >> n;
vector<int> one(n);
map<int, int> m;
set<int> myset;
for (vector<int>::iterator it = one.begin(); it != one.end(); it++)
{
cin >> *it;
m.insert(make_pair(*it, 0));
myset.insert(*it);
}
int all = myset.size();
int num = 1;
vector<int>::iterator it2 = one.begin();
for (int i = 0; i < all;)
{
if (myset.find(num) == myset.end())
{
if (m.find(*it2)->second == 0)
{
m.find(*it2)->second = num;
it2++;
}
while (m.find(*it2)->second != 0)
{
it2++;
}
i++;
}
num++;
}
for (vector<int>::iterator it = one.begin(); it != one.end(); it++)
{
cout<<m[*it]<<' ';
}
return 0;
}

You might also like