1044. Shopping in Mars (25)解题报告

来源:互联网 发布:网络歌手安小沫 编辑:程序博客网 时间:2024/06/05 01:03
#define _CRT_SECURE_NO_WARNINGS#include <cstdio>#include <cstdlib>#include <vector>#include <climits>#include <algorithm>using namespace std;struct solution {    int begin, end;};void find(vector<solution> &v);bool comp(solution s1, solution s2);int *arr, n, m;int main(void) {    vector<solution> v;    int i;    scanf("%d %d", &n, &m);    arr = new int[n];    for (i = 0; i < n; i++) {        scanf("%d", arr + i);    }    find(v);    sort(v.begin(), v.end(), comp);    for (i = 0; i != v.size(); i++) {        printf("%d-%d\n", v[i].begin, v[i].end);    }    free(arr);    return 0;}void find(vector<solution> &v) {    int i, j, min_cost = INT_MAX, tmp_cost;    bool flag = true;    for (i = 0; i < n && flag; i++) {        tmp_cost = 0;        flag = false;        for (j = i; j < n && tmp_cost < m; j++) {            tmp_cost += arr[j];        }        if (tmp_cost >= m) {            flag = true;        }        if (tmp_cost >= m && min_cost == tmp_cost) {            solution s;            s.begin = i + 1;            s.end = j;            v.push_back(s);        }        else if (tmp_cost >= m && min_cost > tmp_cost) {            solution s;            s.begin = i + 1;            s.end = j;            v.clear();            v.push_back(s);            min_cost = tmp_cost;        }    }    return;}bool comp(solution s1, solution s2) {    return s1.begin < s2.begin;}
0 0
原创粉丝点击