#include<bits/stdc++.h> using namespace std; const int INF = 1e6; int main(){ int n, k; cin>>n>>k; vector<int> a(n); for(int i = 0; i < n; i++)cin>>a[i]; vector<int> minPos(n, INF); for(int i = 0; i < n; i++){ minPos[a[i]-1] = min(minPos[a[i]-1], i); } sort(minPos.begin(), minPos.end()); long long cost = 0; bool possible = true; for(int i = 0; i < k; i++){ if(minPos[i] == INF){ possible = false; break; }else{ cost += minPos[i] - i; } } if(!possible){ cout<<"-1\n"; }else{ cout<<cost<<"\n"; } }
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 | #include<bits/stdc++.h> using namespace std; const int INF = 1e6; int main(){ int n, k; cin>>n>>k; vector<int> a(n); for(int i = 0; i < n; i++)cin>>a[i]; vector<int> minPos(n, INF); for(int i = 0; i < n; i++){ minPos[a[i]-1] = min(minPos[a[i]-1], i); } sort(minPos.begin(), minPos.end()); long long cost = 0; bool possible = true; for(int i = 0; i < k; i++){ if(minPos[i] == INF){ possible = false; break; }else{ cost += minPos[i] - i; } } if(!possible){ cout<<"-1\n"; }else{ cout<<cost<<"\n"; } } |