Rareş a primit în dar o carte în care paginile sunt amestecate. Se hotărăşte totuşi să o citească, răsfoind cartea într-un singur sens, de la prima pagină către ultima, în ordinea aşezării lor în carte, respectând următorul algoritm:
Caută la început pagina numerotată cu x=1
.
După ce a citit pagina cu numărul x
caută printre paginile următoare acestei pagini, răsfoind cartea, pagina cu numărul x+1
, fără a căuta printre paginile aşezate înaintea paginii cu numărul x
. Dacă o găseşte atunci va continua lectura în acelaşi mod, iar dacă nu o găseşte atunci va închide cartea şi, în ziua următoare, va relua lectura de la pagina cu numărul x+1
, pe care mai întâi o va caută răsfoind cartea de la început.
Rareş va proceda la fel şi în zilele următoare până când va citi întreaga carte.
Cerinţă
Scrieţi un program care citeşte un număr natural n
, reprezentând numărul paginilor din carte şi n
numere naturale distincte x
1
, x
2
,…, x
n
, reprezentând ordinea în care sunt aşezate cele n
pagini în carte, şi care determină:
a) numărul zilelor în care Rareş citeşte cartea;
b) prima zi în care Rareş a citit cele mai multe pagini şi numărul paginilor citite în acea zi.
Date de intrare
Fișierul de intrare carte.in
conține pe prima linie numărul n al paginilor din carte iar pe linia următoare n
numere întregi distincte x
1
, x
2
,…, x
n
, separate prin câte un spaţiu, reprezentând ordinea în care sunt aşezate paginile în carte.
Date de ieșire
Fișierul de ieșire carte.out
va conține pe prima linie, separate prin câte un spaţiu, trei numere, reprezentând, în ordine :
- numărul zilelor în care Rareş citeşte cartea;
- numărul primei zile în care Rareş a citit cele mai multe pagini;
- numărul maxim de pagini citite într-o zi.
Restricții și precizări
0 < n < 10001
- paginile cărţii sunt numerotate cu numere naturale distincte de la
1
lan
; - citirea cărţii presupune citirea fiecărei pagini din carte, o singură dată;
- zilele în care Rareş citeşte cartea sunt numerotate consecutiv, începând cu numărul
1
; - pentru rezolvarea corectă a subpunctului a) se acordă 40% din punctaj şi pentru rezolvarea corectă a subpunctului b) se acordă 60% din punctaj.
Exemplu
carte.in
9 7 1 3 6 8 2 4 9 5
carte.out
4 2 3
Explicație
- în prima zi citeşte paginile
1
,2
- în a doua zi citeşte paginile
3
,4
,5
- în a treia zi citeşte pagina
6
- în a patra zi citeşte paginile
7
,8
,9
A terminat de citit cartea în 4
zile iar ziua 2
este prima zi în care a citit cele mai multe pagini (3
).
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 Carte:
#include <fstream>
using namespace std;
int main()
{
ifstream in("carte.in");
ofstream out("carte.out");
int i,j,n,v[10001],zi,maxi,zimaxi,contor;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
j=1;
zi=0;
maxi=0;
while(j<=n)
{
contor=0;
for(i=1;i<=n;i++)
if(v[i]==j)
{
j++;
contor++;
}
if(maxi<contor)
{
maxi=contor;
zimaxi=zi;
}
zi++;
}
out<<zi<<" "<<(zimaxi+1)<<" "<<maxi;
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 #1074 Carte
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1074 Carte 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!