Witam,
Próbuję rozwiązać zadanie maturalne - http://mfranczak.pl/zadanie-maturalne-2005-najlepsze-sumy-najpopularniejsze-elementy/ jednak nie mogę nigdzie znaleźć poprawnych odpowiedzi. Byłbym wdzięczny gdyby ktoś sprawdził mój kod i jeśli są w nim jakieś błędy to nakierował na poprawne rozwiązanie. Wydaje mi się, że funkcja najpopularniejszy() nie działa poprawnie, ponieważ użyłem algorytmu wyszukiwania lidera.
#include<iostream>
#include<string>
#include<fstream>
int T[10000000];
int najlepsza_suma(std::string plik, int T[]){
int n = 0, now;
std::ifstream o;
o.open(plik.c_str());
while(o >> now){
T[n] = now;
n++;
}
o.close();
int najsum = T[0];
for(int i = 0; i < n; i++){
if(najsum < T[i]){
najsum = T[i];
}
int pom = T[i];
for(int j = i; j < n-1; j++){
pom += T[j + 1];
if(najsum < pom){
najsum = pom;
}
}
}
return najsum;
}
int najpopularniejszy(std::string plik, int T[]){
int now, n = 0;
std::ifstream o;
o.open(plik.c_str());
while(o >> now){
T[n] = now;
n++;
}
o.close();
int do_pary = 1, lider = T[0];
for(int i = 1; i < n; i++){
if(do_pary == 0){
lider = T[i];
do_pary = 1;
}else if(lider == T[i]){
do_pary++;
}else{
do_pary--;
}
}
return lider;
}
int main(){
std::cout << najlepsza_suma("dane5-1.txt", T) << std::endl;
std::cout << najlepsza_suma("dane5-2.txt", T) << std::endl;
std::cout << najlepsza_suma("dane5-3.txt", T) << std::endl;
std::cout << std::endl;
std::cout << najpopularniejszy("dane5-1.txt", T) << std::endl;
std::cout << najpopularniejszy("dane5-2.txt", T) << std::endl;
std::cout << najpopularniejszy("dane5-3.txt", T) << std::endl;
}