Pagini recente » Cod sursa (job #2961305) | Cod sursa (job #2628602) | Cod sursa (job #100600) | Borderou de evaluare (job #1567392) | Cod sursa (job #2358368)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin ("secventa.in");
ofstream fout ("secventa.out");
int a[500005], dq[500005], n, k, sz1;
char s[3000005];
void lirefrancais()
{
fin >> n >> k;
fin.get();
fin.getline(s, 3000005);
int sz = strlen(s);
char semn = '+';
for(int i = 0; i < sz; i++) {
if(s[i] == '-' || s[i] == '+') semn = s[i];
else if(s[i] >= '0' && s[i] <= '9') {
int nr = 0;
while(s[i] >= '0' && s[i] <= '9') nr = nr * 10 + (s[i] - '0'), ++i;
if(semn == '+') a[++sz1] = nr;
else a[++sz1] = -nr, semn = '+';
}
}
}
int main()
{
int F = 1, L = 0, mn = 30005, mx = 0;
lirefrancais();
int x = 1, y = k;
for(int i = 1; i <= k; ++i) {
dq[++L] = a[i];
mn = min(mn, a[i]);
}
mx = mn;
for(int i = k + 1; i <= n; ++i) {
if(dq[F] == mn && a[i] <= mn) mn = a[i], dq[++L] = mn, ++F;
else if(dq[F] == mn) {
++F;
dq[++L] = a[i];
mn = 30005;
for(int j = F; j <= L && mn != dq[F - 1]; ++j)
mn = min(mn, dq[j]);
}
else ++F, dq[++L] = a[i];
if(mn > mx) mx = mn, x = F, y = L;
}
fout << x << " " << y << " " << mx;
return 0;
}