结构体、sort的使用

来源:互联网 发布:软件销售服务协议 编辑:程序博客网 时间:2024/05/18 06:23
//a42木材加工问题  by scq#include <algorithm>#include <stdio.h>using namespace std;typedef struct myTimber {int l;int w;struct myTimber *next;}TimberNode;bool myCmp(const TimberNode &m, const TimberNode &n){if(m.l < n.l) return true;else if(m.l == n.l) {if(m.w < n.w) return true;}return false;}int main() {int n, i, minutes = 0, tempL, tempW;TimberNode *headNode = new TimberNode, *tempNode = new TimberNode;TimberNode *preNode = new TimberNode;scanf("%d", &n);TimberNode *timbers = new TimberNode[n];for(i = 0; i < n; i++) {scanf("%d %d", &timbers[i].l, &timbers[i].w);}sort(timbers, timbers + n, myCmp);for(i = 0; i < n - 1; i++) {timbers[i].next = &timbers[i+1];}timbers[n-1].next = NULL;headNode->next = &timbers[0];headNode->l = 0;headNode->w = 0;while(headNode->next){minutes++;tempNode = headNode;tempL = tempNode->l;tempW = tempNode->w;preNode = tempNode->next;while(preNode) {if(preNode->l >= tempL && preNode->w >= tempW) {tempNode->next = preNode->next;tempL = preNode->l;tempW = preNode->w;preNode = tempNode->next;} else {tempNode = preNode;preNode = preNode->next;}}}printf("%d", minutes);return 0;}