Pentru cei elevi din clasa a VI-a competiția este foarte importantă și, pentru a se pregăti suplimentar, aceștia lucrează de pe site-ul www.PROBLEMEINFORMATICA.RO.
Pentru a-i încuraja, profesoara de informatică le promite câte o notă de 10 primilor k
elevi, cei mai harnici și sârguincioși.
Dacă observă că mai sunt elevi care au același număr de probleme rezolvate ca și cel de pe poziția k
, atunci profesoara, echidistantă, mai pune în plus note de 10 la toți aceștia.
Cerința
Să se scrie un program care, citind numărul N
de elevi ai clasei, numărul k
de elevi notați cu 10 și N
valori reprezentând numărul de probleme rezolvate de fiecare elev, rezolvă cerințele:
1. Afișează în ordine descrescătoare numărul de problem lucrate de elevii care vor primi nota 10.
Pentru cei elevi din clasa a VI-a competiția este foarte importantă și, pentru a se pregăti suplimentar, aceștia lucrează de pe site-ul www.PROBLEMEINFORMATICA.RO.
Pentru a-i încuraja, profesoara de informatică le promite câte o notă de 10 primilor k
elevi, cei mai harnici și sârguincioși.
Dacă observă că mai sunt elevi care au același număr de probleme rezolvate ca și cel de pe poziția k
, atunci profesoara, echidistantă, mai pune în plus note de 10 la toți aceștia.
Cerința
Să se scrie un program care, citind numărul N
de elevi ai clasei, numărul k
de elevi notați cu 10 și N
valori reprezentând numărul de probleme rezolvate de fiecare elev, rezolvă cerințele:
1. Afișează în ordine descrescătoare numărul de problem lucrate de elevii care vor primi nota 10.
2. Afișează în ordinea descrescătoare a numărului de probleme rezolvate, numerele de ordine ale tuturor elevilor care primesc nota 10.
Date de intrare
Fișierul de intrare zece.in
conține pe prima linie un număr natural C
(C
poate avea doar valoarea 1
sau valoarea 2
). A doua linie conține, în această ordine, separate printr-un un spațiu, numerele N
și k
. A treia linie conține, în ordine numărul de probleme rezolvate de cei N
copii, numerotați de la 1
la N
, exprimate prin numere naturale, despărțite prin câte un spațiu.
Date de ieșire
Dacă valoarea lui C
este 1
, se va rezolva numai cerința 1). În acest caz, fişierul de ieșire zece.out
va conține pe prima linie minim k
numere naturale reprezentând numărul de probleme rezolvate de elevii care primesc nota 10
, în ordinea descrescătoare a acestora (valorile vor fi separate de câte un spațiu).
Dacă valoarea lui C
este 2
, se va rezolva numai cerința 2). În acest caz, fişierul de ieșire zece.out
va conține pe prima linie minim k
numere naturale reprezentând numerele de ordine ale elevilor în ordinea descrescătoare a numărului de probleme rezolvate de aceștia. Dacă sunt elevi care au același număr de probleme rezolvate se vor afișa elevii în ordinea crescătoare a poziției lor (valorile vor fi separate de câte un spațiu).
Restricții și precizări
1 ≤ N ≤ 1000
1 ≤ k ≤ N
- cele
N
numere citite vor fi mai mici decât1.000.000
Exemplul 1
zece.in
1 5 3 18 45 55 60 45
zece.out
60 55 45 45
Explicație
Cerința este 1.
N=5
, K=3
Cele mai multe probleme rezolvate sunt 60 55 45
dar pentru că avem doi elevi cu 45
de probleme, vor primi nota 10, 4
elevi, în loc de 3
.
Exemplul 2
zece.in
2 5 3 18 45 55 60 45
zece.out
4 3 2 5
Explicație
Cerința este 2.
N=5
, K=3
Elevul situat pe poziția 4
are cele mai multe probleme – 60
, este urmat de elevul de pe poziția 3
care are 55
de probleme și apoi de elevii de pe pozițiile 2
și 5
care au fiecare câte 45
de probleme.
#include <bits/stdc++.h> using namespace std; ifstream fin("zece.in"); ofstream fout("zece.out"); int main() { int p , i , k , n , a[10001] , z , j , aux , b[10001]; fin >> p >> n >> k; for(i = 1 ; i <= n ; i++) { fin >> a[i]; b[i] = i; } for(j = 1 ; j < n ; j++) for(z = j + 1 ; z <= n ; z++) if(a[z] > a[j]) { aux = a[z] ; a[z] = a[j] ; a[j] = aux; aux = b[z] ; b[z] = b[j] ; b[j] = aux; } else if(a[z] == a[j] && b[j] > b[z]) { aux = b[z]; b[z] = b[j]; b[j] = aux; } if(p == 1) { for(i = 1 ; i <= k ; i++) fout << a[i] <<" "; while(a[i] == a[k]) { fout << a[i] <<" "; i++; } } else { for(i = 1 ; i <= k ; i++) fout << b[i] <<" "; while(a[i] == a[k]) { fout << b[i] <<" "; i++; } } return 0; }