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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!