Pagini recente » Cod sursa (job #181206) | Cod sursa (job #1609161) | Cod sursa (job #1341796) | Cod sursa (job #1961445) | Cod sursa (job #2174041)
/*#include <iostream>
#include <fstream>
using namespace std;
int v[100001];
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int main(){
int n;
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
a[i]=a[i-1]+v[i];
}
for(int i=1;i<=n;++i){
for(int j=i;j<=n;++j){
for(int k=i;k<=j;++k){
sum=sum+v[k]; ///operatia 1
if(sum>summax) ///operatia 2
summax=sum ///op 3
///indici
}
}
}
for(int i=1;i<=n;++i){
for(int j=i;j<=n;++j){
sum = sp[j]-sp[i+1];
if(sum>summax) ///operatia 2
summax=sum ///op 3
///indici
}
}
for(int i=1;i<=n;++i){
///stim cat e sp[i]
sum = sp[i]-spmin; /// suma maxima cu capatul din dr pe pozitia i
if(sum>summax){
///update-urile
stmax = pozmin;
drmin = i;
}
spmin = min(spmin,sp[i]); ///updatam suma partiala pana la poz a
///pozspmin =
}
return 0;
}*/
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int n,v[6000010],i,smax=-2111111111,a,first_ind,last_ind,minim=1000010000;
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
}
for(i=1;i<=n;i++){
v[i]+=v[i-1];
if(smax<v[i]-minim){
smax=v[i]-minim;
first_ind=a+1;
last_ind=i;
}
if(v[i]<minim){
minim=v[i];
a=i;
}
}
fout << smax << " " << first_ind << " " << last_ind;
return 0;
}