Professor Chirag (Page Replacement)

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m,i,j,k,hit=0;
  
    cin>>n;
 
    cin>>m;
    vector<int> p(m);
    vector<int> hi(m);
  
    for(i=0;i<m;i++){
        cin>>p[i];
    }
    vector<vector<int>> a(n);
    for(i=0;i<n;i++){
        a[i]=vector<int>(m,-1);
    }
    map <int, int> mp;    
    for(i=0;i<m;i++){
        vector<pair<int,int>> c;
        for(auto q: mp){
            c.push_back({q.second,q.first});
        }
        sort(c.begin(),c.end());
        bool hasrun=false;
        for(j=0;j<n;j++){
            if(a[j][i]==p[i]){
                hit++;
                hi[i]=1;
                mp[p[i]]++;
                hasrun=true;
                break;
            }
            if(a[j][i]==-1){
                for(k=i;k<m;k++)
                    a[j][k]=p[i];
                mp[p[i]]++;
                hasrun=true;
                break;
            }
        }
        if(j==n||hasrun==false){
            for(j=0;j<n;j++){
                if(a[j][i]==c[c.size()-1].second){
                    mp.erase(a[j][i]);
                    for(k=i;k<m;k++)
                        a[j][k]=p[i];
                    mp[p[i]]++;
                    break;
                }
            }
        }
        for(auto q:mp){
            if(q.first!=p[i]){
                mp[q.first]++;
            }
        }
    }
    
    for(i=0;i<m;i++){
        cout<<"";
    }
    
    
    cout<<"Faults="<<m-hit<<'\n';
    return 0;
}
//code by lakshay singhwal

Leave a comment

Design a site like this with WordPress.com
Get started