Rezolvare completă PbInfo #1074 Carte

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 x1, x2,…, xn, 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 x1, x2,…, xn, 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 la n;
  • 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 Adresa de email.

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!