• Uva



    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <cstring>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <stack>
    #include <queue>
    
    using namespace std;
    
    // 这里用struct也可以
    class book
    {
    public:
    	book(string t, string a) { author = a; title = t; borrowed = returned = false; }
    	bool borrowed, returned;
    	string author, title;
    };
    
    vector<book> all;
    string in, command, req;
    
    void shelve(), borrow(), back();
    
    bool cmpa(book a, book b){ return (a.author < b.author); }
    bool cmpt(book a, book b){ return (a.title < b.title); }
    
    int main()
    {
    	while (getline(cin, in) && in != "END")
    		all.push_back(book(in.substr(0, in.find_last_of(""") + 1),
    		in.substr(in.find_last_of(""") + 1)));
    	stable_sort(all.begin(), all.end(), cmpt);
    	stable_sort(all.begin(), all.end(), cmpa);
    
    	while (cin >> command)
    		if (command == "BORROW")
    			cin.get(), borrow();
    		else if (command == "RETURN")
    			cin.get(), back();
    		else if (command == "SHELVE")
    			cin.get(), shelve();
    }
    
    void shelve()
    {
    	for (int i = 0, j; i < all.size(); ++i)
    		if (all[i].returned == true)
    		{
    			for (j = i; j >= 0; --j)
    				if (all[j].borrowed == false)
    					break;
    			if (j == -1)
    				printf("Put %s first
    ", all[i].title.c_str());
    			else
    				printf("Put %s after %s
    ", all[i].title.c_str(), all[j].title.c_str());
    			all[i].borrowed = all[i].returned = false;
    		}
    	cout << "END
    ";
    }
    void borrow()
    {
    	getline(cin, req);
    	for (int i = 0; i < all.size(); i++)
    		if (all[i].title == req)
    		{
    			all[i].borrowed = true;
    			return;
    		}
    }
    void back()
    {
    	getline(cin, req);
    	for (size_t i = 0; i < all.size(); i++)
    		if (all[i].title == req)
    		{
    			all[i].returned = true;
    			return;
    		}
    }




  • 相关阅读:
    Java中的equals方法和==的区别
    C语言学习笔记--单向链表Markdown版本
    Tamias Blog's
    nginx图片服务器
    Nginx安装解决报错
    Detour框架注入样本无法正常启动(0x000007b)
    结构体指针中包含结构体指针
    Linux开发准备:Ubuntu14.04+Samba+MobaXterm+Source Insight 4.0
    在Visual Studio中将dll以资源的形式嵌入exe中
    MACD的价值不在于“金叉死叉”而在于背离
  • 原文地址:https://www.cnblogs.com/zhangyaoqi/p/4591584.html
Copyright © 2020-2023  润新知