Rezolvare completă PbInfo #1754 Munti

Vrăjitorul Arpsod își dorește să își reamenajeze habitatul. În habitatul acestuia există N munți, fiecare cu o înălțime cunoscută. Fiind un tip cu un foarte dezvoltat simț estetic, el își dorește să remodeleze cei N munți astfel încât să obțină un număr maxim de munți cu aceeași înălțime.

Arpsod are la îndemână o magie ce funcționează astfel: alege oricare doi munți, pe primul îl crește cu o unitate iar pe al doilea îl scade cu o unitate. Un munte poate ajunge la înălțimi negative ( practic se transformă într-o groapă ).

Arpsod își poate folosi magia de un număr infinit de ori.

Cerința

Vrăjitorul vă cere să determinați numărul maxim de munți ce pot fi aduși la o înălțime egală.

Date de intrare

Pe prima linie a fișierului munti.in se va afla numărul natural N, reprezentând numărul de munți existenți. Pe cea de-a doua linie se vor afla N valori naturale separate prin spațiu, reprezentând înălțimea inițială a fiecărui munte.

Date de ieșire

Fișierul munti.out va conține, pe prima și singura linie a fișierului, numărul maxim de munți ce pot fi aduși la o înălțime egală.

Restricții și precizări

  • 1 ≤ N ≤ 1.000.000
  • 1 ≤ înălțimea inițială ≤ 1.000.000.000

Exemplu

munti.in

4
2 6 2 2

munti.out

4

Explicație

Toți munții pot fi aduși la înălțime 3, la fiecare pas scădem o unitate din muntele de înălțime 6 și adăugăm la un munte de înălțime 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 Munti:

// implementare: Cristi Dospra
// punctaj: 100p
// complexitate: O(N)

#include <fstream>
using namespace std;

ifstream fin ( "munti.in" );
ofstream fout ( "munti.out" );

int main(){

    int N, x;
    long long S = 0;

    fin >> N;

    for ( int i = 1; i <= N; ++i ){
        fin >> x;
        S = ( S + x ) % N;
    }

    if ( S == 0 )
        fout << N;
    else
        fout << N-1;

    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 #1754 Munti

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1754 Munti 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!