Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- void massimi (int &x , int &y, multiset <int> vet){
- multiset <int>::reverse_iterator it=vet.rbegin();
- x=*it;
- it++;
- y=*it;
- }
- int main(){
- ifstream fin ("input.txt");
- ofstream fout("output.txt");
- int n,k,m1,m2,best,tmp,i;
- fin>>n;
- fin>>k;
- multiset <int> vet;
- queue <int> coda;
- for(i=0;i<k;i++){
- fin>>tmp;
- vet.insert(tmp);
- coda.push(tmp);
- }
- massimi(m1,m2,vet);
- best= (m1-m2)/2;
- for( ; i<n;i++){
- fin>>tmp;
- coda.push(tmp);
- vet.insert(tmp);
- vet.erase(coda.front());
- coda.pop();
- if(tmp > m2 ){
- massimi(m1,m2,vet);
- if(best > (m1-m2)/2)best=(m1-m2)/2;
- }else{
- if( vet.count(m1)==0 || vet.count(m2)==0){
- massimi(m1,m2,vet);
- if(best > (m1-m2)/2)best=(m1-m2)/2;
- }
- }
- }
- fout<<best;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement