1 条题解
-
0
#include <iostream> #include <vector> #include<sstream> using namespace std; struct Time { int hour; int minute; Time(){} Time(int hour,int minute) { this->hour=hour; this->minute=minute; } string to_string() { stringstream ss; if(hour<10) ss<<"0"; ss<<hour<<":"; if(minute<10) ss<<"0"; ss<<minute; return ss.str(); } // 重写操作符 bool operator>=(const Time& b) { if(this->hour>b.hour) return true; else if(this->hour==b.hour) if(this->minute>=b.minute) return true; return false; } }; struct appUse { string name; int priority; Time startTime; Time endTime; bool isInitialized=false; appUse(){} appUse(string name,int priority,Time startTime,Time endTime) { this->name=name; this->priority=priority; this->startTime=startTime; this->endTime=endTime; this->isInitialized=true; } }; int strToInt(string input) { stringstream ss; int n; ss<<input; ss>>n; return n; } Time strToTime(string input) { stringstream ss; ss<<input; vector<string> out; string store; while(getline(ss,store,':')) out.push_back(store); int hour=strToInt(out[0]),minute=strToInt(out[1]); return Time(hour,minute); } string judgeAvailableApp(vector<appUse> apps,Time inputTime) { int priority=0; string outAppName="NA"; appUse outApp; for(auto app:apps) { // 判断因为有时间重合而覆盖掉的情况 if(outApp.isInitialized) { // 有重合 if(!(outApp.startTime>=app.endTime||app.startTime>=outApp.endTime)) // 有重合且outApp优先级小,则outApp被删除 if(outApp.priority<app.priority) { outAppName="NA"; outApp.isInitialized=false; } } if(inputTime>=app.startTime&&app.endTime>=inputTime&&app.priority>priority) { priority=app.priority; outAppName=app.name; outApp=app; } } return outAppName; } int main(int argc, char *argv[]) { vector<appUse> apps; int appAmount; cin>>appAmount; for(int i=0;i<appAmount;i++) { string appName,beginTime,endTime; int priority; cin>>appName>>priority>>beginTime>>endTime; appUse app(appName,priority,strToTime(beginTime),strToTime(endTime)); apps.push_back(app); } string input; cin>>input; Time inputTime=strToTime(input); cout<<judgeAvailableApp(apps,inputTime); }
- 1
信息
- ID
- 1
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 974
- 已通过
- 89
- 上传者