Cod sursa(job #1774197)

Utilizator Cudrici_CarinaCudrici Carina Cudrici_Carina Data 8 octombrie 2016 17:50:16
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream fi("secventa.in");
ofstream fo("secventa.out");
int n,k,i,a[500001],d[500001],p,u,maxi=-100000000,poz;
char s[7000000];

void citesc()
{
fi>>n>>k;
fi.get();
fi.get(s,7000000);
int l=strlen(s);
int semn=1,nr=0,m=0;

for(i=0;i<=l;i++)
{if(s[i]=='-') semn=-1;
 if(s[i]<='9' and s[i]>='0') {nr*=10;nr+=s[i]-'0';}
 if(s[i]==' ' or s[i]=='\0') {a[++m]=nr*semn;
                              nr=0;semn=1;}
}

}
int main()
{
citesc();
//for(i=1;i<=n;i++)fo<<a[i]<<" ";

for(i=1;i<=n;i++)
 {
  while(p<=u and a[d[u]]>=a[i]) u--;
  while(p<=u and d[p] < i-k+1) p++;
  d[++u]=i;
  if(i>=k and maxi<a[d[p]])  {maxi=a[d[p]];poz=i;}
 }
fo<<poz-k+1<<" "<<poz<<" "<<maxi;
    return 0;
}