01/10/2018, 11:42

Giúp đỡ giảm thời gian chạy của Solution 224B - Codeforces

Em đang giải một solution của codeforces 224B này ạ (http://codeforces.com/problemset/problem/224/B), nhưng mà gặp lỗi quá thời gian. Anh/Chị nào giúp em giảm thời gian với. Em cảm ơn nhiều ạ.

void segment(vector<int> a, int k)
{
	int n = a.size();
	int cnt[10000] = { 0 };
	int count = 0, left = 1, right;
	for (int i = 1; i < n; i++)
	{
		cnt[a[i]]++;
		if (cnt[a[i]] == 1)
			count++;
		if (count == k)
		{
			right = i;
			break;
		}
	}
	if (count != k)
	{
		cout << "-1 -1";
		return;
	}
	for (int i = left; i < n; i++)
	{
		cnt[a[i]]--;
		if (cnt[a[i]] == 0)
		{
			left = i;
			break;
		}
	}
	cout << left << " " << right << endl;
}

int main() {
	int n, k;
	cin >> n >> k;
	vector<int> a;
	a.push_back(0);
	for (int i = 0; i < n; i++)
	{
		int number;
		cin >> number;
		a.push_back(number);
	}
	if (k > n)
		cout << "-1 -1";
	else
		segment(a, k);
	return 0;
}
Bài liên quan
0