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 probleme 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.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Zece:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("zece.in");
ofstream fout("zece.out");
unsigned int C;
int a[1001], b[1001], N, k, cati, i, j;
int main()
{
fin>>C>>N>>k;
for(i=1; i<=N; i++) fin>>a[i];
for(i=1; i<=N; i++) b[i]=a[i];
for(i=1; i<=N-1; i++)
for(j=i+1; j<=N; j++)
if(a[i]<a[j]) swap(a[i], a[j]);
if(C==1)
{
for(i=1; i<=k; i++) fout<<a[i]<<;
j=i;
while(a[j]==a[i-1]) {fout<<a[j]<<; j++;}
}
if(C==2)
{
for(j=1; j<=k; j++)
for(i=1; i<=N; i++) if(b[i]==a[j] && a[j]!=a[j-1]) fout<<i<<;
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1946 Zece
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1946 Zece de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!