Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Object oriented Code ~~~#include<iostream> #include<stdio.h> #include<list> using namespace std; class Bookshelf; //forward declaration class Book{ public: Book(int _id,int _width):id(_id),width(_width){} int id,width; friend class Bookshelf; }; class Bookshelf{ public: Bookshelf(int w):width(w){ occupied_width=0; } void add(const Book &book){ shelf.push_front(book); occupied_width += book.width; while(occupied_width>width){ occupied_width -= (shelf.back()).width; shelf.pop_back(); } } void remove(const int &id){ list<Book>::iterator i; for(i=shelf.begin();i!=shelf.end();i++){ if(i->id == id) break; } if(i==shelf.end()) return; occupied_width -= i->width; shelf.erase(i); } friend ostream& operator<<(ostream &out,Bookshelf &bookshelf); private: list<Book> shelf; int width; int occupied_width; }; ostream& operator<<(ostream &out, Bookshelf &bookshelf) { list<Book>::iterator i; for(i=(bookshelf.shelf).begin();i!=(bookshelf.shelf).end();i++) out<<" "<<i->id; return out; } int main() { int width; int p=1; char cmd; while(cin>>width,width!=-1) { Bookshelf bookshelf(width); int id,w; while(cin>>cmd) { if(cmd=='E') break; else if(cmd=='R') { cin>>id; bookshelf.remove(id); }else { cin>>id>>w; bookshelf.add(Book(id,w)); } } cout<<"PROBLEM "<<p++<<":"<<bookshelf<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator