C++ 当从子集中删除一个int时,如何找到最大子集和?

C++ 当从子集中删除一个int时,如何找到最大子集和?,c++,performance,optimization,C++,Performance,Optimization,当我运行程序时,我得到了错误的答案。这是一个来自codechef竞赛的问题。 以下是问题的链接: 这是我的密码: #include<bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int t,p=0; vector<int> a; while(cin>>t) { a

当我运行程序时,我得到了错误的答案。这是一个来自codechef竞赛的问题。 以下是问题的链接: 这是我的密码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
   ios_base::sync_with_stdio(false);
   cin.tie(NULL);
   int t,p=0;
   vector<int> a;
   while(cin>>t)
   {
       a.push_back(t);
   }
   int var = *min_element(a.begin(),a.end());
   for(auto i=a.begin();i!=(a.end()-1);i++)
   {
       int val=*i;
       const auto begin = a.begin() + p;
       int q = p+1;
       for(auto j=i+1;j!=a.end();j++)
       {
           val += *j;
           const auto end = begin + q;
           var = max(var,val-(*min_element(next(a.begin(),p),(next(a.begin(),q)))));
           q++;
       }
       p++;
   }
   cout<<var<<endl;
}
#包括
使用名称空间std;
int main()
{
ios_base::与_stdio同步(false);
cin.tie(空);
int t,p=0;
载体a;
而(cin>>t)
{
a、 推回(t);
}
int var=*min_元素(a.begin(),a.end());
对于(自动i=a.begin();i!=(a.end()-1);i++)
{
int val=*i;
const auto begin=a.begin()+p;
int q=p+1;
对于(自动j=i+1;j!=a.end();j++)
{
val+=*j;
常数自动结束=开始+q;
var=max(var,val-(*min_元素(next(a.begin(),p),(next(a.begin(),q‘‘‘‘));
q++;
}
p++;
}

coutYou应该能够构造测试用例并调试像这样简单的程序。codechef的问题描述真是太可怕了。注意:如果你给变量起了有意义的名字,那么就更容易弄清楚你是如何完成它的。无论哪种方式,请提供示例输入、输出和所需的输出。