我就想问下网易有道第一题最有攻击方式这个我错在哪里了。。。
#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; }
#网易#