Solução Iniciante Infomatica - Semana 38

Nessa solução devemos considerar dois vetores, o vetor de entrada e o vetor final, após ser ordenado, simulando a operação que via vai fazer.

Vamos passar por ambos os vetores, o ordenado e o inicial. Na posição i, caso os valores sejam diferentes nos dois vetores, aquela boneca seria pega por Bia, e colocada na posição correta.

Podemos fazer isso com a ajuda de um vetor, guardando as bonecas que estão na posição errada, e no final, imprimindo o tamanho do vetor, e as respectivas bonecas, após o vetor ser ordenado.

Código para melhor entedimento


#include <bits/stdc++.h>
using namespace std;
const int maxn = 100001;
int v[maxn];
int u[maxn];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++) cin >> v[i], u[i] = v[i];
sort(u, u+n);
vector<int> res;
for (int i = 0; i < n; i++) if (v[i] != u[i]) res.push_back(v[i]);
sort(res.begin(), res.end());
cout << res.size() << "\n";
for (int i : res) cout << i << " ";
cout << "\n";
}

view raw

bonecas.cpp

hosted with ❤ by GitHub