#11674: 實在不知道錯在哪裡?


buanyz03 (張晁瑋)

學校 : 新北市立板橋高級中學
編號 : 2629
來源 : [114.25.190.198]
最後登入時間 :
2023-09-06 15:43:50
a166. NOI2005 Day1.2.维护数列 -- NOI2005Day1第二题 | From: [114.25.215.176] | 發表日期 : 2017-01-15 22:25

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
vector <int> N;
int f()
{
int max,sum;
max=0;
sum=0;
for(int i=0;i<N.size();++i)
{
if(sum+N[i]>0)
{
sum+=N[i];
}
else
{
sum=0;
}
if(sum>max)
{
max=sum;
}
}
if(max==0)
{
max=-1e9;
for(int i=0;i<N.size();++i)
{
if(N[i]>max)
{
max=N[i];
}
}
}
return max;
}
void show()
{
cout<<"SHOW: ";
for(int i=0;i<N.size();++i)
{
cout<<N[i]<<" ";
}
cout<<endl;
}
int main()
{
int n,m,num,posi,tot,c;
string s;
vector <int>::iterator it;
while(cin>>n>>m)
{
N.clear();
while(n--)
{
cin>>num;
N.push_back(num);
}
while(m--)
{
cin>>s;
if(s=="INSERT")
{
cin>>posi>>tot;
it=N.begin()+posi;
while(tot--)
{
cin>>num;
N.insert(it,num);
it++;
}
//show();
}
else if(s=="DELETE")
{
cin>>posi>>tot;
posi--;
N.erase(N.begin()+posi,N.begin()+posi+tot);
}
else if(s=="MAKE-SAME")
{
cin>>posi>>tot>>c;
posi--;
for(int i=posi;i<posi+tot;++i)
{
N[i]=c;
}
}
else if(s=="REVERSE")
{
cin>>posi>>tot;
posi--;
for(int i=posi,j=posi+tot-1;j>i;i++,j--)
{
swap(N[i],N[j]);
}
}
else if(s=="GET-SUM")
{
int sum=0;
cin>>posi>>tot;
posi--;
for(int i=posi;i<posi+tot;++i)
{
sum+=N[i];
}
cout<<sum<<endl;
}
else
{
cout<<f()<<endl;
}
//show();
}
}
return 0;
}

詳細檢查過了,一直錯在記憶體區段錯誤

 
ZeroJudge Forum