Cod sursa(job #3333318)
| Utilizator | Data | 12 ianuarie 2026 22:22:35 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.82 kb |
#include<fstream>
using namespace std ;
ifstream cin("ssm.in");
ofstream cout("ssm.out");
int dp[10000001] ;
int main(){
int n ;
cin>>n;
for(int i = 1 ; i <= n ; i ++ )
cin>>dp[i];
int mx = dp[1] , curr = dp[1] , ind ;
for(int i = 2 ; i <= n ; i ++ )
{
curr = max(dp[i],curr+dp[i]);
if(mx < curr ){
ind = i ;
mx = curr ;
}
}
int end = ind , start = ind ;
cout<<mx<< ' ';
while(mx!=0 && start>=1){
mx-=dp[start];
start -- ;
}
if(dp[start]!=0)
cout<<start+1<< ' '<<end;
else
cout<<start<< ' '<<end;
return 0 ;
}