Pagini recente » Cod sursa (job #2128194) | Cod sursa (job #699584) | Cod sursa (job #889319) | Cod sursa (job #2680395) | Cod sursa (job #287488)
Cod sursa(job #287488)
#include<fstream>
using namespace std;
struct node
{
int val,poz;
node *next,*prev;
};
typedef struct node *lista;
void addnode(lista &first, lista &last, int x, int y)
{
node *p = new node;
p->val=x;
p->poz=y;
p->next=NULL;
if (!first)first=p;
if (last){last->next=p;p->prev=last;}
else p->prev = NULL;
last=p;
}
void deletestartnode(lista &first)
{
node *p;
p=first;
first=first->next;
delete p;
}
void deleteendnode(lista &last)
{
node *p;
p=last;
last=last->prev;
delete p;
}
int main()
{
ifstream f("secventa.in");
long i,n,k,c,max1,dr,st;
dr=st=0;
f>>n>>k;
lista first,last;
first=last=NULL;
for (i=1;i<k;i++)
{
f>>c;
while (last && last->val >= c)deleteendnode(last);
addnode(first,last,c,i);
}
max1=-30020;
for (i=k;i<=n;i++)
{
f>>c;
if (first->poz == i-k)deletestartnode(first);
while (last && last->val >= c)deleteendnode(last);
addnode(first,last,c,i);
if (max1 < first->val){max1=first->val; dr=i; st=i-k+1;}
}
f.close();
ofstream g("secventa.out");
g<<st<<' '<<dr<<' '<<max1<<'\n';
g.close();
return 0;
}