martedì 1 aprile 2014

[C++] Nanga

Durante la lunga scalata delle cime attorno al Nanga Parbat, Reinhold Messner riesce a trasmettere al
campo base, a intervalli regolari, solo il dislivello percorso rispetto all'ultima trasmissione. Se invia un
numero positivo P, allora è salito di P metri rispetto alla precedente trasmissione; se invia un numero
negativo ­P, allora è sceso di P metri rispetto alla precedente trasmissione; se infine invia P=0, non ha
cambiato altitudine. Messner parte dal campo base a 5000 metri.
I suoi collaboratori al campo base ricevono tali rilevamenti: aiutali a identificare l'altitudine che risulta
più frequentemente rilevata in questo modo.

Dati di input
Il file  input.txt  è composto da N+1 righe. La prima riga contiene l'intero positivo N, il numero dei
rilevamenti trasmessi da Messner. Ciascuna delle successive N righe contiene un intero che rappresenta
il dislivello percorso rispetto alla precedente trasmissione.
Dati di output
Il file  output.txt  è composto da una sola riga contenente l'altitudine che risulta più frequentemente
rilevata in questo modo dal campo base.

Assunzioni
2 ≤ N ≤ 1000.
­100 ≤ P ≤ 100.

Esempi di input/output
File  input.txt                   File  output.txt
8                                      5002
3
-1
6
-7
1
4
0
-4

Registriamo i risultati su un vettore, poi  cercheremo il massimo:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<cstdlib>
#include<iostream>
#include<fstream>

#define base 5000 //metri
#define N 10000
#define no -1

using namespace std;

ifstream in;
ofstream out;

int n,t,h=base,a[N][2],l=0,maxn=0,maxi;

int cerca (int k){
for (int i=0;i<l;i++)
 if (a[i][0]==k)
  return i;
return no;}

int main(){
in.open("input.txt");
out.open("output.txt");

in>>n;

for (int i=0;i<n;i++){
 in>>t;
 h+=t;
 t=cerca(h);
 if (t==no){
  a[l][0]=h;
  a[l++][1]=1;
 }else
  a[t][1]++;
}

for (int i=0;i<l;i++)
 if (a[i][1]>maxn){
  maxn =a[i][1];
  maxi=a[i][0];}

out<<maxi;

return 0;}

Nessun commento:

Posta un commento

Si prega di non commentare in modo volgare e/o offensivo.