feat: new alternative WA solutions implemented

This commit is contained in:
2026-02-05 23:09:57 -03:00
parent 3aa9fe7c42
commit 0f4e453c07
4 changed files with 97 additions and 1 deletions

View File

@@ -0,0 +1,49 @@
#include <bits/stdc++.h>
#define MAX_PAGE 1010
using namespace std;
vector<int> pages;
unordered_set<int> cache;
vector<int> referencesCount;
int getLeastFrequentlyUsedPage() {
int lfuCount = INT_MAX, lfuPage = -1;
for (const int page : cache) {
if (referencesCount[page] < lfuCount) {
lfuPage = page;
lfuCount = referencesCount[page];
}
}
return lfuPage;
}
int main(){
int k, v; cin >> k >> v;
pages.resize(v);
for (int i = 0; i < v; i++) {
cin >> pages[i];
}
int misses = 0;
referencesCount.resize(MAX_PAGE, 0);
for (int i = 0; i < v; i++) {
if (!cache.count(pages[i])) {
bool isCacheFull = cache.size() == k;
if (isCacheFull) {
cache.erase(getLeastFrequentlyUsedPage());
}
misses++;
cache.insert(pages[i]);
referencesCount[pages[i]] = 1;
} else {
referencesCount[pages[i]]++;
}
}
cout << misses << endl;
return 0;
}

View File

@@ -0,0 +1,47 @@
#include <bits/stdc++.h>
#define MAX_PAGE 1010
using namespace std;
vector<int> pages;
unordered_set<int> cache;
vector<int> lastReference;
int getLeastRecentlyUsedPage() {
int lruTime = INT_MAX, lruPage = -1;
for (const int page : cache) {
if (lastReference[page] < lruTime) {
lruPage = page;
lruTime = lastReference[page];
}
}
return lruPage;
}
int main(){
int k, v; cin >> k >> v;
pages.resize(v);
for (int i = 0; i < v; i++) {
cin >> pages[i];
}
int misses = 0;
lastReference.resize(MAX_PAGE, -1);
for (int i = 0; i < v; i++) {
if (!cache.count(pages[i])) {
bool isCacheFull = cache.size() == k;
if (isCacheFull) {
cache.erase(getLeastRecentlyUsedPage());
}
misses++;
cache.insert(pages[i]);
}
lastReference[pages[i]] = i;
}
cout << misses << endl;
return 0;
}