Cod sursa(job #2591030)

Utilizator OvidRata Ovidiu Ovid Data 29 martie 2020 15:39:07
Problema Deque Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define pb push_back
#define ft first
#define sc second
#define ll long long
ifstream fin("deque.in"); ofstream fout("deque.out");



int n, t, q, k, l;
vector<int> b;

void bs1(int x, int l, int r){
int m=(l+r)/2;

if(l==r){ b.erase(b.begin()+m, b.begin()+m+1 ); return; }

if(b[m]>=x){bs1(x, l, m); }
else{bs1(x, m+1, r); }



}

void bs2(int x, int l, int r){
int m=(l+r)/2;

if(l==r){    vector<int> a={x};   b.insert(b.begin()+m, a.begin(), a.end() );return; }

if(b[m]>=x){bs2(x, l, m); }
else{bs2(x, m+1, r); }



}








int main(){
fin>>n>>k;

ll sum=0;
int m=10e8;


vector<int> s;



for(int i=0; i<k; i++){
s.pb(0);
b.pb(0);
fin>>s[i];
b[i]=s[i];

}

sort(b.begin(), b.end());
sum+=b[0];

for(int i=0; i<b.size(); i++){
    cout<<b[i]<<" ";
}
cout<<"\n";

for(int i=0; i<n-k; i++){
bs1(s[0], 0, b.size() );
s.erase(s.begin(), s.begin()+1 );


int x; fin>>x;
s.pb(x);
bs2(x, 0, b.size());
sum+=b[0];


}

fout<<sum;


return 0;
}