#include #include #include #include #include using namespace std; struct course { int cap; set times; }tempc; struct student { set cou; set times; }temps; map maps; map mapc; map ct; struct request { string s,c; int idx; }re[500]; bool check(int x) { map::iterator its=maps.find(re[x].s); map::iterator itc=mapc.find(re[x].c); if(itc->second.cap<=0) return false; if(its->second.cou.count(re[x].c)!=0) return false; for(set::iterator it=itc->second.times.begin();it!=itc->second.times.end();++it) { if(its->second.times.count(*it)!=0) return false; } for(set::iterator it=itc->second.times.begin();it!=itc->second.times.end();++it) { its->second.times.insert(*it); } (its->second.cou.insert(re[x].c)); (itc->second.cap)--; return true; } bool cmp(const request &a,const request &b) { if(ct[a.c]ct[b.c]) return false; else return a.idx