P13849 题解
题目传送门
思路
题目要求按字典序输出每一个人工作时长的差异,不难想到可以用 map 存下每个人的工作时间。第一份排班表用负数存,第二份排班表用正数存。
由于 map 按照字典序存储,我们可以直接遍历 map,若某个元素不为
考虑一下输入问题。由于存在 ----- 和 =====,不方便直接存储,可以考虑统一用字符串存储,转化成整数可以用 stoi 函数。
AC CODE
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
int f=-1;
map<string,int>mp;
while(true){
cin>>s;
if(s=="------"){
f=1;
continue;
}
if(s=="======")
break;
int l=stoi(s);
cin>>s;
int r=stoi(s);
cin>>s;
mp[s]+=f*(r-l);
}
bool flag=true;
for(auto[str,val]:mp)
if(val){
cout<<str<<" ";
if(val<0)
cout<<val<<"\n";
else cout<<"+"<<val<<"\n";
flag=false;
}
if(flag)
cout<<"No differences found.\n";
return 0;
}