Cod sursa(job #847923)

Utilizator danutbodbodnariuc danut danutbod Data 4 ianuarie 2013 17:27:54
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.67 kb
////var I 100p
//#include <fstream>
//#define NMax 5000003
//using namespace std;
//ifstream f("deque.in");
//ofstream g("deque.out");
//int a[NMax], deque[NMax],i,k,n,p,u;
//long long s;
//int main()
//{
//    f>>n>>k;
//    for(i=1; i<=n; i++) f>>a[i];
//    p=1;u=0;
//    for(i=1; i<=n; i++)
//    {
//        while(p<=u && a[i]<= a[deque[u]]) u--;
//        deque[++u]=i;
//        if(deque[p]==i-k) p++;
//        if(i>=k) s+=a[deque[p]];
//    }
//    g<<s<<'\n';
//    return 0;
//}
//var II 100p
#include <fstream>
#define  NMax 10000003
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int deque[NMax],a[NMax],i,n,x,k,p,u;
long long s;
int main()
{
    f>>n>>k;
    for(i=1;i<=n;i++)f>>a[i];
    p=1;u=0;
    for(i=1;i<=n;i++){

       while(p<=u&&deque[u]>a[i])u--;
       u++;deque[u]=a[i];
       if(i>=k){
                s+=(long long)deque[p];
                if(deque[p]==a[i-k+1])p++;
         }
    }
    g<<s<<'\n';
    g.close();
    return 0;
}
////var III 100p
//#include <fstream>
//#define  NMax 10000003
//using namespace std;
//ifstream f("deque.in");
//ofstream g("deque.out");
//int deque[NMax],a[NMax],i,n,x,k,p,u;
//long long s;
//int main()
//{
//    f>>n>>k;
//    for(i=1;i<=n;i++)f>>a[i];
//    p=1;u=1;deque[u]=a[1];
//    for(i=2;i<=k;i++){
//       while(p<=u&&deque[u]>a[i])u--;
//       u++;deque[u]=a[i];
//    }
//    s+=(long long)deque[p];
//    for(i=k+1;i<=n;i++){
//       if(deque[p]==a[i-k])p++;
//       while(p<=u&&deque[u]>a[i])u--;
//       u++;deque[u]=a[i];
//       s+=(long long)deque[p];
//    }
//    g<<s<<'\n';
//    g.close();
//    return 0;
//}