Cod sursa(job #384855)
| Utilizator | Data | 21 ianuarie 2010 12:55:15 | |
|---|---|---|---|
| Problema | Deque | Scor | 20 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.58 kb |
#include <fstream>
#include <cstdlib>
#define inf 0x3f3f3f3f
/*
*
*/
using namespace std;
inline int min( int x, int y )
{
return y^( (x^y) & -(x<y) );
}
int main()
{
int n, i, j, s=0, k, x, start=0;
int *v, *count;
ifstream in("deque.in");
in>>n>>k;
v=new int[n];
count=new int[n];
for( i=0; i < n; ++i )
{
in>>x;
v[i]=x;
count[i]=1;
for( j=start; j < i; ++j )
if( count[j] >= k )
start=j;
else { v[j]=min( v[j], x );
++count[j];
}
}
for( i=0; i <= n-k; ++i )
s+=v[i];
ofstream out("deque.out");
out<<s;
}
