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 ≤ 10001 ≤ k ≤ N- cele
Nnumere 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!