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