Pagini recente » Cod sursa (job #1845723) | Cod sursa (job #807819) | Cod sursa (job #1024861) | Cod sursa (job #2454199) | Cod sursa (job #382722)
Cod sursa(job #382722)
#include <iostream>
#include <cstdio>
#include <vector>
#define NMAX 50010
#define pb push_back
using namespace std;
class nuss
{
public:
int val, l, r, t;
};
nuss ob;
vector<nuss> sol;
int N, K, v[NMAX], i, sw, e, s, sum, poz;
int smax, lmax, val, nr;
void read(void)
{
freopen("secv2.in", "r", stdin);
scanf("%d %d", &N, &K);
for(i = 1; i <= N; ++i)
{
scanf("%d", &v[i]);
if(v[i] > 0)
++nr;
}
fclose(stdin);
}
inline void add(int z, int x, int c, int v)
{
ob.val = z;
ob.l = x;
ob.r = c;
ob.t = v;
sol.pb(ob);
}
void calc(void)
{
int s = e = 1;
add(v[1], 1, 1, 1);
sum = v[1];
for(i = 2; i <= N; ++i)
{
if((sum + v[i]) > 0)
{
sum += v[i];
e = e + 1;
add(sum, s, e, e - s + 1);
}
else
{
sum = v[i];
s = e = i;
add(v[i], i, i, 1);
}
}
smax = INT_MIN;
lmax = 0;
for(i = 0; i < N; ++i)
if((sol[i].val >= smax) && (sol[i].t > lmax))
smax = sol[i].val, lmax = sol[i].t, poz = i;
}
void solve(void)
{
calc();
}
void print(void)
{
freopen("secv2.out", "w", stdout);
printf("%d %d %d", sol[poz].l, sol[poz].r, sol[poz].val);
fclose(stdout);
}
int main(void)
{
read();
solve();
print();
return 0;
}