Gumka do mazania

0

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

0

A to jest błąd jaki wywala mi platforma sprawdzająca:
process exited due to signal 11 kod wyjścia: 2816

0
for(size_t a=pozycja_poczatkowa[i];a<rozmiar || ilosc==ilosc_wystapien_max[i];a++)
{
    if(wyrazy[i][a]-'a'!=ostatni)
                ^^^

w tym miejscu wyjeżdżasz poza stringa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1