600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 1019. 程序猿和产品狗

1019. 程序猿和产品狗

时间:2020-02-06 04:08:13

相关推荐

1019. 程序猿和产品狗

在公司里面,程序猿经常有一堆todolist要做,而这些todolist是产品经理分配给他们的。但是当程序员遇到不懂技术的产品狗时,就悲剧了。产品经理经常修改他们的todolist,比如:添加,减少他们的todolist。

请设计一个类CodeMonkey ,表示程序猿,另一个类ProductDog,表示产品经理。

CodeMonkey类有私有成员 name,todolist。构造函数初始化姓名和todolist,公有函数 int sizeof_todolist(), 来自ProductDog类的友元函数 add_todolist(CodeMonkey&,int),reduce_todolist(CodeMonkey& , int);ProductDog类有公有函数 add_todolist(CodeMonkey&,int),reduce_todolist(CodeMonkey& , int)

Input Specification

每个测试文件包含一组测试用例,对于每个测试用例,第一行输入 n (1<= n <= 10^6)表示有n个程序员,接下去n行,每行为: name x 表示名为name的程序员的todolist的长度为x。 接下去一行 m (1<=m<=10^6),表示产品经理分配任务的次数。 接下去m行,每行为 name opt x , opt 为 0 表示名为name的程序猿的todolist增加x,opt为 1 表示减少x。 输入数据保证合法性。

Output Specification

对于每个程序员,请输出 name x,x表示最终的todolist长度。按输入顺序输出。

Sample Input:

3Jack 1Luck 2Tom 34Tom 0 100Luck 0 50Jack 0 25Tom 1 50

Sample Output:

Jack 26Luck 52Tom 53

时间限制 1000 ms内存限制 65536 kB代码长度限制 8192 B判题程序Standard作者etaf来源友元

#include<iostream>#include<iomanip>#include<string>using namespace std;class Product;class CodeMonkey;class ProductDog{public: void creat(CodeMonkey *,int ,int); void add_todolist(CodeMonkey &,int); void reduce_todolist(CodeMonkey &,int);};class CodeMonkey{ friend void ProductDog::creat(CodeMonkey *,int ,int);friend void ProductDog::add_todolist(CodeMonkey &,int);friend void ProductDog::reduce_todolist(CodeMonkey &,int);friend void Qsort(CodeMonkey*,int,int);private : string name; int todolist,sign;public: int turn_sign() { return sign; } string turn_name() { return name; } void cout_todolist() { cout<<name<<" "<<todolist<<endl; }void creat(int len) { cin>>name>>todolist;sign=len; }};void ProductDog::add_todolist(CodeMonkey &b,int todolist){ b.todolist=b.todolist+todolist;}void ProductDog::reduce_todolist(CodeMonkey &b,int todolist){ b.todolist=b.todolist-todolist;}void ProductDog::creat(CodeMonkey *b,int n,int len){int a,front,len2,sign,todolist;string name; while(n--) { front=0;len2=len;a=len/2; cin>>name; do{if(b[a].name<name){front=a;}else{ len2=a; }a=(front+len2)/2; }while(b[front].name!=name&&b[len2].name!=name);if(b[front].name==name)a=front;else a=len2;cin>>sign>>todolist;if(sign==0)add_todolist(b[a],todolist);if(sign==1)reduce_todolist(b[a],todolist); }}template <typename T>void swap(T *m,T *n){ T temp; temp=*m; *m=*n; *n=temp;}void Qsort(CodeMonkey *a,int l,int r){ int i,j; string name; i=l; j=r; name=a[i].name; do{ while(i<=j&&a[j].name>name)j--; while(i<=j&&a[i].name<name)i++; if(i<=j){swap(&a[i].name,&a[j].name);swap(&a[i].todolist,&a[j].todolist);swap(&a[i].sign,&a[j].sign);i++; j--; } }while(i<=j); if(l<j)Qsort(a,l,j); if(i<r)Qsort(a,i,r);}CodeMonkey CM[1000000];int main(){ ProductDog PD;int n,add1,add,add2;cin>>n;add1=0; while(add1<n) {CM[add1].creat(add1); add1++; } Qsort(CM,0,add1-1); cin>>n; PD.creat(CM,n,add1-1); add=0; for(;add<add1;add++) {for(add2=0;add2<add1;add2++){ if(add==CM[add2].turn_sign()) CM[add2].cout_todolist();} } return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。