1016.Phone Bills (25)…to be continued…
pat-al-1016
2017-02-16
坑見注釋參考:《算法筆記:上機訓(xùn)練實戰(zhàn)指南》機械工業(yè)出版社/** * pat-al-1016 * 2017-02-16 * Cpp version * Author: fengLian_s */ #include<stdio.h> #include<algorithm> #include<string.h> #define MAX 1010 using namespace std; struct RECORD { char name[25]; int month; int dd, hh, mm; bool flagOn;//false為off,true為on }record[MAX], tmp; int cost[25]; bool cmp(RECORD a, RECORD b) { if(strcmp(a.name, b.name) != 0) return strcmp(a.name, b.name) < 0;//坑,注意要用strcmp else if(a.dd != b.dd) return a.dd < b.dd; else if(a.hh != b.hh) return a.hh < b.hh; else if(a.mm != b.mm) return a.mm < b.mm; } void getAns(int on, int off, int& lastTime, double& money) { tmp = record[on]; while(tmp.dd < record[off].dd || tmp.hh < record[off].hh || tmp.mm < record[off].mm) { lastTime++; money += cost[tmp.hh]; tmp.mm++; if(tmp.mm == 60) { tmp.mm = 0; tmp.hh++; } if(tmp.hh == 24) { tmp.hh = 0; tmp.dd++; } } } int main() { freopen("in.txt", "r", stdin); int n; for(int i = 0;i < 24;i++) { scanf("%d", &cost[i]); } scanf("%d", &n); for(int i = 0;i < n;i++) { char tmpFlag[10]; scanf("%s%d:%d:%d:%d", record[i].name, &record[i].month, &record[i].dd, &record[i].hh, &record[i].mm); scanf("%s", tmpFlag); if(tmpFlag[1] == 'f') record[i].flagOn = false; else record[i].flagOn = true; } sort(record, record+n, cmp); // for(int i = 0;i < n;i++) // { // -TBC-新聞熱點
疑難解答