#include <bits/stdc++.h>
using namespace std;
const int SIZE = 500003;
int n,k,wyrzuc,wynik;
bool czy[SIZE];
vector<int> wstaw,wywal;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>k;
for(int i = 0; i < n; i++){
int x;
cin>>x;
if(i < k){
if(czy[x]) wywal.push_back(i), wyrzuc++;
else czy[x] = true;
}
if(i >= k)
if(!czy[x] && wyrzuc > 0) czy[x] = true, wstaw.push_back(i), wyrzuc--;
}
// cerr<<"chce wywalic elementy na pozycjach: ";
// for(auto& x:wywal) cerr<<x<<" ";
// cerr<<endl;
// cerr<<"i zastapic je elementami na pozycjach: ";
// for(auto& x:wstaw) cerr<<x<<" ";
// cerr<<endl;
if(wyrzuc > 0){
cout<<"-1\n";
return 0;
}
for(int i = 0; i < (int)wstaw.size(); i++) wynik += abs(wstaw[i]-wywal[i]);
cout<<wynik<<"\n";
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <bits/stdc++.h> using namespace std; const int SIZE = 500003; int n,k,wyrzuc,wynik; bool czy[SIZE]; vector<int> wstaw,wywal; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k; for(int i = 0; i < n; i++){ int x; cin>>x; if(i < k){ if(czy[x]) wywal.push_back(i), wyrzuc++; else czy[x] = true; } if(i >= k) if(!czy[x] && wyrzuc > 0) czy[x] = true, wstaw.push_back(i), wyrzuc--; } // cerr<<"chce wywalic elementy na pozycjach: "; // for(auto& x:wywal) cerr<<x<<" "; // cerr<<endl; // cerr<<"i zastapic je elementami na pozycjach: "; // for(auto& x:wstaw) cerr<<x<<" "; // cerr<<endl; if(wyrzuc > 0){ cout<<"-1\n"; return 0; } for(int i = 0; i < (int)wstaw.size(); i++) wynik += abs(wstaw[i]-wywal[i]); cout<<wynik<<"\n"; return 0; } |
English