Tävlingsprogrammering/Uppgifter/Förvirrad föreläsare
Utseende
Här gäller det bara att implementera det som står i uppgiften. Vi läser in en rad med tal och kollar för varje tal (utom det första eftersom han alltid gör rätt första veckan):
- Om talet är mindre än det föregående så ökar vi en räknare "tomma" med skillnaden.
- Om talet är större än det föregående så ökar vi en räknare "missade" med skillnaden.
Lösningsförslag i C++:
#include <iostream>
using namespace std;
int main() {
int N, tomma, missade, forra, nu, i;
cin >> N;
tomma=missade=0;
for(i=0;i<N;i++) {
cin >> nu;
if(i>0) { //Inget problem första veckan
tomma += max(forra-nu, 0);
missade += max(nu-forra, 0);
}
forra=nu;
}
cout << tomma << " " << missade << endl;
return 0;
}
Ännu kortare blir programmet om man utnyttjar listfunktioner i t.ex. Python:
import sys
f=[int(x) for x in sys.stdin.read().split()[1:]]
print sum([max(x-y,0) for x,y in zip(f,f[1:])]), sum([max(y-x,0) for x,y in zip(f,f[1:])])