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