#include<iostream>
#include<string>
#include<unordered_map>
using namespace std;
class student{
public:
    string firstname;
    string lastname;
    string rollno;

    student(string f,string l, string n){
        firstname = f;
        lastname = l;
        rollno = n;
    }
    bool operator == (const student &s)const{
        return rollno == s.rollno;
    }
};

class Hashfn{
public:
    size_t operator()(const student &s)const{
        return s.firstname.length() + s.lastname.length();
    }
};
int main(){

    unordered_map<student,int,Hashfn> student_map;
    student s1("pratek", "narang", "010");
    student s2("rahul", "kumar", "023");
    student s3("pratek", "gupta", "030");
    student s4("rahul", "kumar", "120");

    //add student marks to hashmap
    student_map[s1] = 100;
    student_map[s2] = 80;
    student_map[s3] = 90;
    student_map[s3] = 70;

    for(auto s:student_map){
        cout<<s.first.firstname<<" "<<s.first.rollno<<"marks"<<s.second<<endl;
    }

return 0;}
