#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; } |