我就想问下网易有道第一题最有攻击方式这个我错在哪里了。。。

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void getIndex(vector<int>&res,int a,int b,int &n,vector<int>&r)
{
    vector<int>::iterator it=max_element(res.begin()+1,res.end()-1);
    if(*it>=0)
    {
        *it=*it-a;
        vector<int>::iterator t1=it-1;
        vector<int>::iterator t2=it+1;
        *t1=*t1-b;
        *t2=*t2-b;
        n++;
        r.push_back(it-res.begin()+1);
    }
    else
    {
        if(res[0]>=0)
        {
            res[1]=res[1]-a;
            res[2]=res[2]-b;
            res[0]=res[0]-b;
            n++;
            r.push_back(2);
        }
        if(res[res.size()-1]>=0)
        {
            int len=res.size()-1;
            res[len-1]=res[len-1]-a;
            res[len-2]=res[len-2]-b;
            res[len]=res[len]-b;
            n++;
            r.push_back(len);
        }
    }
    return;
}

int main()
{
    int n,a,b;
    while(cin>>n>>a>>b)
    {
        vector<int> _in(n);
        vector<int> res;
        for(int i=0;i<n;i++)
            cin>>_in[i];

        int num=0;
        while(true)
        {

            vector<int>::iterator it=max_element(_in.begin(),_in.end());
            if(*it<0)
            {
                break;
            }
            else
            {
                getIndex(_in,a,b,num,res);
            }
        }
        cout<<num<<endl;
        for(int i=0;i<res.size();i++)
            cout<<res[i]<<" ";
        cout<<endl;
    }
    return 0;
}


#网易#
全部评论
怎么感觉题目是错的呢,那个431 1411输入,明明三下就可以全部打死啊
点赞 回复 分享
发布于 2016-09-22 21:10
不是找最大值那么简单。。 而且当1到n-1都小于0了也不需要再找最大值了。。
点赞 回复 分享
发布于 2016-09-22 21:35

相关推荐

河和静子:如果大专也能好过的话,我寒窗苦读几年的书不是白读了?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务