Witam, rozwiązuję zadanie http://main.edu.pl/pl/archive/oig/6/gum
Napisałem kod:
#include <iostream>
#include <string>
using namespace std;
int N=0;
string *wyrazy;
int main()
{
cin>>N;
wyrazy=new string[N];
for(int i=0;i<N;i++)
{
cin>>wyrazy[i];
}
string *max=&wyrazy[0];
for(int m=0;m<N;m++)
{
if(wyrazy[m]>*max)
{
max=&wyrazy[m];
}
}
string tmp=*max;
*max=wyrazy[0];
wyrazy[0]=tmp;
max=&wyrazy[0];
for(size_t i=0;i<wyrazy[0].size();i++)
{
for(int o=1;o<N;o++)
{
short ask=1;
for(size_t p=0;p<wyrazy[o].size();p++)
{
if(wyrazy[0][i]==wyrazy[o][p])
{
wyrazy[o].erase(p, 1);
ask=0;
break;
}
}
if(ask==1)
{
wyrazy[0].erase(i, 1);
i--;
break;
}
}
}
string wynik;
for(size_t i=0;i<wyrazy[0].size();i++)
{
int adres=i+1;
for(size_t o=i+1;o<wyrazy[0].size();o++)
{
if(wyrazy[0][adres]<wyrazy[0][o])
{
adres=o;
}
}
if(wyrazy[0][adres]>wyrazy[0][i])
{
wynik+=wyrazy[0][adres];
i=adres;
}
else
{
wynik+=wyrazy[0][i];
}
}
wyrazy[0]=wynik;
const string bitek="bitek";
for(size_t i=0;i<wyrazy[0].size() && i<bitek.size();i++)
{
if(bitek[i]>wyrazy[0][i])
{
cout<<bitek;
}
else
{
cout<<wyrazy[0];
}
}
}
Gdy za pierwszym razem wysłałem ten kod(tyle że wczytanie danych testowych było w oddzielnej funkcji) do oceny dostałem 10 punktów, gdy teraz sprawdzam z danymi testowymi na moim komputerze działa okej, gdy wysyłam je na platformę OIG dostaję 0 punktów, 1 odpowiedź jest dobra, możecie zobaczyć gdzie jest błąd w moim kodzie(ja piszę pod Visualem, a oni to oceniają pod gcc linuxowym)
Poza tym tu masz wyciek pamięci, bo masz new, a nie masz delete.
- to tradycja na wszystkich konkursach algorytmicznych. Btw. ma to sens jeśli się idzie na wydajność.