Răspuns :
Răspuns:
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("cioc.in");
ofstream fout("cioc.out");
int n,i,k,c, kfinal;
long long v[100002], a[100002], maxk;
int main()
{
fin >> c >> n >> k;
for (i=0; i<n; ++i)
{
fin >> v[i];
a[i]=v[i];
}
sort(a, a+n);
while (a[k]==a[k-1] && k<n) ++k;
kfinal=k; maxk=a[k-1];
if (c==1) fout << kfinal;
else
{
for (i=0; i<n; ++i)
{
fout << v[i] << " ";
if (v[i]<=maxk) fout << 2*v[i] << " ";
}
}
}
Explicație:
100 f.f. proaspăt.. :))) Nu am aplicat Divide et Impera şi a mers rapid
#include <fstream>// ifstream si ofstream
#include <algorithm>// sort()
using namespace std;
long long vec[100001]; // vectorul initial
long long srtvec[100001]; // vectorul sortat
long long mod[200001]; // vectorul modificat
int main(){
int c,n,k;
ifstream fin("cioc.in");
ofstream fout("cioc.out");
fin >> c >> n >> k;
for(int i = 1; i <= n; i++){
fin >> vec[i];
srtvec[i] = vec[i];
}
fin.close();
sort(&srtvec[1], &srtvec[n+1]);
if(c==1){
int kf = k;
long long v = srtvec[k];
while(srtvec[++kf] == v);
fout << --kf;
}else{//c=2
long long int vm = srtvec[k];
int poz = 0;
for(int i = 1; i <= n; i++){
mod[poz++] = vec[i];
if(vec[i] <= vm){
mod[poz++] = vec[i] * 2;
}
}
for(int i = 0; i < poz; i++){
fout << mod[i] << ' ';
}
}
fout.close();
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.