La ONIGIM2013 participă N
elevi de clasa a V-a având ca id-uri, în ordine, numerele naturale de la 1
la N
. Anul acesta organizatorii au afişat la clasa a V-a toate punctajele distincte obţinute de elevi, în ordine strict crescătoare p
1
, p
2
,…, p
K
, şi un şir de N
valori a
1
, a
2
,…, a
N
, unde a
i
reprezintă numărul de elevi care au punctaje strict mai mici decât punctajul elevului având id-ul i
(1≤i≤N
).
Cerință
Cunoscând numărul de elevi (N
), numărul de punctaje distincte (K
) obţinute de elevii de clasa a V-a, punctajele p
1
, p
2
,…, p
K
, în ordine strict crescătoare, şi valorile a
1
, a
2
,…, a
N
cu semnificaţia din enunţ, să se scrie un program care determină:
a) Punctajul obţinut de fiecare elev în ordinea crescătoare a id-urilor.
b) Numărul de distincţii acordate de organizatori. Numărul de distincţii este egal cu numărul de elevi care au obţinut cele mai mari trei punctaje distincte.
c) Numărul maxim de elevi care au obţinut acelaşi punctaj.
Date de intrare
Fișierul de intrare onigim.in
conține pe prima linie numerele naturale N
şi K
reprezentând numărul de elevi, respectiv numărul de punctaje distincte obţinute de elevi. Pe a doua linie sunt K
numere naturale în ordine strict crescătoare p
1
, p
2
,…, p
K
reprezentând punctajele distincte obţinute de elevi, şi pe a treia linie sunt N
numere naturale a
1
, a
2
,…, a
N
, unde a
i
reprezintă numărul de elevi care au punctaje strict mai mici decât punctajul elevului cu id-ul i
.
Date de ieșire
Fișierul de ieșire onigim.out
va conține trei linii. Pe prima linie se află N
numere naturale v
1
, v
2
,…, v
N
reprezentând punctajele obţinute de cei N
concurenţi (v
i
- punctajul concurentului cu id-ul i
), pe a doua linie se află un număr natural D
reprezentând numărul de distincţii acordate de organizatori, pe a treia linie se află un număr natural M
reprezentând numărul maxim de elevi care au obţinut acelaşi punctaj.
Restricții și precizări
1 ≤ N ≤ 1000
;1 ≤ p
i
≤ 300
, (1≤i≤N
);0 ≤ a
i
< 1000
, (1≤i≤N
);1 ≤ K ≤ 1000
;
Exemplu
onigim.in
6 4 100 150 175 200 4 2 0 0 3 4
onigim.out
200 150 100 100 175 200 4 2
Explicație
Sunt 4
elevi care au punctajul mai mic decât punctajul elevului cu id-ul 1
, 2
elevi cu punctajul mai mic decât punctajul elevului cu id-ul 2
, etc.
Cele mai mari 3
punctaje sunt obţinute de 4
elevi. Numărul maxim de elevi care au acelaşi punctaj este 2
.
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 OniGim:
//lucia miron
#include <fstream>
using namespace std;
ifstream fin("onigim.in");
ofstream fout("onigim.out");
int n,k,i,j,v[1001],a[1001],p[301],fr[1001],nrdistinctii,nr;
int main()
{
fin>>n>>k;
for(i=1;i<=k;i++)
fin>>p[i];
for(i=1;i<=n;i++)
{
fin>>a[i];
fr[a[i]]++;
}
i=1;
for(j=0;j<=n;j++)
if(fr[j]!=0)
{
v[j]=p[i];
i++;
}
for(i=1;i<=n;i++)
a[i]=v[a[i]];
for(i=1;i<=n;i++)
fout<<a[i]<<' ';
fout<<'\n';
nrdistinctii=0;nr=0;
for(i=n;i>=0;i--)
if(fr[i]!=0&&nr<3)
{
nrdistinctii+=fr[i];
nr++;
}
fout<<nrdistinctii<<'\n';
nr=0;
for(i=0;i<n;i++)
if(nr<fr[i])nr=fr[i];
fout<<nr<<'\n';
fout.close();
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 #1147 OniGim
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1147 OniGim 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!