logo AlgoBeat OnlineJudge
登录 注册

#10014. 梦中的网课管理

内存限制:512 MiB 时间限制:350 ms 输入文件:class.in 输出文件:class.out
题目类型:传统 评测方式:文本比较
上传者: yzl_Alvin

题目描述

请注意本题特殊的时间限制


题目背景

小y在上咕洛网校的网课,但他一不小心睡着了,睁开眼时,他已经变成了网课的管理者,而这时的咕洛网校刚刚开业,他心想:这有趣啊,我要好好干!
第一步,当然是筹集足够的资金了!小y列出了他以后数个月的计划和他心中的初始资金,想让你帮他写个程序,看看这些初始资金够不够。


小y列出了 个月的计划,每个月他都会执行一次操作,其心中的初始资金为 ,咕洛网校一共有 种课程,第 种课程有4个参数,分别是名称(字符串) ,成本(整数) ,利润(整数) ,单价(整数)
支持六种操作,每次会给出一个操作符
,则代表新建课程操作,会给出如上的四个参数,即名称 ,成本 ,利润 ,单价 ,如果名称重复,输出ERR:HAVE ONE,否则输出OK
,则代表修改操作,给出 ,表示把名称为 改为 ,如果课程不存在,输出ERR:DON'T HAVE,否则输出OK
,则代表查询操作,给出 ,表示查询课程 ,如果课程不存在,输出ERR:DON'T HAVE,否则输出课程
,则代表开课操作,给出 ,表示用课程名称 对应的 的成本赚取 的利润。如果课程不存在,输出ERR:DON'T HAVE,如果钱不够成本,输出ERR:MONEY NOT ENOUGH,否则输出OK;
,则代表删除操作,给出 ,表示删除名称为 的课程,如果课程不存在,输出ERR:DON'T HAVE,否则输出OK;
,则输出一个正整数,为当前所有未被删除的的课程数量。

最后,输出剩余钱数。

输入格式

输入共 行。
第一行,输入 ,含义见题目描述;
往后第 行,每行一个正整数 ,其余见题目描述;

输出格式

行,对于 个操作,每个操作按题目描述输出一行。
行,输出剩余钱数。

样例

#1:
输入:

3 2 100  
1 a 1000 -1 10  
2 a 200  
3 a   

输出:

OK  
OK  
200  
100  

#2:
输入:

10 3 1000  
1 a 100 100 20  
2 a 10  
3 a  
4 a  
5 b  
6  
5 a  
6  
1 b 2 2 1  
1 c 3 4 2  

输出:

OK  
OK   
10  
OK  
ERR:DON'T HAVE  
1  
OK  
0  
OK  
OK  
1000  

数据范围与提示

对于 的数据,保证
对于 的数据,保证
如果您认为您的代码的时间复杂度正确却 ,请多次提交代码尝试

欢迎提供hack数据! code:

#include<fstream>
#include<map>
#include<string>
using namespace std;
struct kc{
    long long money,s,need;
    bool cz=false;
};
map<string,struct kc>a;
int main(){
    ifstream fin("class.in");
    ofstream fout("class.out");
    long long m,n,c,dd=0;
    fin>>m>>n>>c;
    short op;
    string name;
    long long money,s,need,nneed;
    while(m--){
        fin>>op;
        if(op==1){
            fin>>name>>money>>s>>need;
            if(a[name].cz==true){
                fout<<"ERR:HAVE ONE"<<endl;
            }else{
                a[name].cz=true;
                a[name].money=money;
                a[name].s=s;
                a[name].need=need;
                fout<<"OK"<<endl;
                dd++;
            }
        }else if(op==2){
            fin>>name>>nneed;
            if(a[name].cz==false){
                fout<<"ERR:DON'T HAVE"<<endl;
            }else{
                a[name].need=nneed;
                fout<<"OK"<<endl;
            }
        }else if(op==3){
            fin>>name;
            if(a[name].cz==false){
                fout<<"ERR:DON'T HAVE"<<endl;
            }else{
                fout<<a[name].need<<endl;
            }
        }else if(op==4){
            fin>>name;
            if(a[name].cz==false){
                fout<<"ERR:DON'T HAVE"<<endl;
            }else{
                if(a[name].money>c){
                    fout<<"ERR:MONEY NOT ENOUGH"<<endl;
                }else{
                    c-=a[name].money;
                    c+=a[name].s;
                    fout<<"OK"<<endl;
                }
            }
        }else if(op==5){
            fin>>name;
            if(a[name].cz==false){
                fout<<"ERR:DON'T HAVE"<<endl;
            }else{
                a[name].cz=false;
                fout<<"OK"<<endl;
                dd--;
            }
        }else if(op==6){
            fout<<dd<<endl;
        }
    }
    fout<<c<<endl;
    fin.close();
	fout.close(); 
}

想要提供的,发站内信,收件人36或yzl_Alvin