Witam rozwiązuję zadanie http://main.edu.pl/pl/archive/oig/6/gum
Napisałem taki kod:
#include<iostream>
#include<string>
using namespace std;
const int N=10000;
unsigned int ilosc_wystapien[N][26];
unsigned int ilosc_wystapien_max[26];
unsigned int ostatni, pierwszy;
unsigned int pozycja_poczatkowa[N];
string wyrazy[N];
//21:41-22:30, 23:10 - 23:30, 20:00
int main()
{
for(int i=0;i<26;i++)
{
ilosc_wystapien_max[i]=0;
}
int n;
cin>>n;
cin>>wyrazy[0];
size_t rozmiar=wyrazy[0].size();
for(size_t a=0;a<rozmiar;a++)
{
ilosc_wystapien[0][wyrazy[0][a]-'a']+=1;
}
for(int a=0;a<26;a++)
{
ilosc_wystapien_max[a]=ilosc_wystapien[0][a];
}
for(int i=1;i<n;i++)
{
cin>>wyrazy[i];
rozmiar=wyrazy[i].size();
for(size_t a=0;a<rozmiar;a++)
{
ilosc_wystapien[i][wyrazy[i][a]-'a']+=1;
}
for(int a=0;a<26;a++)
{
//błąd
if(ilosc_wystapien[i][a]<ilosc_wystapien_max[a])
{
ilosc_wystapien_max[a]=ilosc_wystapien[i][a];
}
}
}
for(int a=25;a!=0;a++)
{
if(static_cast<int>(ilosc_wystapien_max[a])!=0)
{
ostatni=a;
break;
}
}
if(ostatni<=1)
{
cout<<"bitek";
}
else
{
for(int a=0;a<26;a++)
{
if(static_cast<int>(ilosc_wystapien_max[a])!=0)
{
pierwszy=a;
break;
}
}
//błędy
while(ostatni>=pierwszy)
{
for(int i=0;i<n;i++)
{
rozmiar=wyrazy[i].size();
unsigned int ilosc=0;
for(size_t a=pozycja_poczatkowa[i];a<rozmiar || ilosc==ilosc_wystapien_max[i];a++)
{
if(wyrazy[i][a]-'a'!=ostatni)
{
ilosc_wystapien[i][wyrazy[i][a]-'a']--;
}
else
{
ilosc++;
pozycja_poczatkowa[i]=a;
}
}
for(unsigned int a=ostatni;pierwszy<=a && a-1>0;a--)
{
if(ilosc_wystapien[i][a]<ilosc_wystapien_max[a])
{
ilosc_wystapien_max[a]=ilosc_wystapien[i][a];
}
}
}
ostatni--;
}
}
for(int i=25;i>=0;i--)
{
if(ilosc_wystapien_max[i]!=0)
{
if(i<=1)
{
cout<<"bitek";
return 0;
}
break;
}
}
for(int i=25;i!=0;i--)
{
for(size_t a=0;a<ilosc_wystapien_max[i];a++)
{
cout<<(char)(i+'a');
}
}
return 0;
}
Pomóżcie mi go usunąć. Jest to błąd wykonania