#include<bits/stdc++.h> using namespace std; pair <int,int> tab[500050]; int tab1[500050]; int comp(pair<int,int> first, pair<int,int> second) { if(first.first<second.first) { return 1; } else { if(first.first==second.first) { return first.second<second.second; } else { return 0; } } } int main() { int a,b,poz=1,w=0; cin >> a >> b; for(int i=0;i<a;i++) { cin >> tab[i].first; tab[i].second=i; } sort(tab,tab+a,comp); tab1[0]=tab[0].second; for(int i=0;i<a-1;i++) { if(tab[i+1].first!=tab[i].first) { tab1[poz]=tab[i+1].second; poz++; } } if(poz<b) { cout << "-1"; return 0; } sort(tab1,tab1+poz); for(int i=0;i<b;i++) { w+=tab1[i]-i; } cout << w; }
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include<bits/stdc++.h> using namespace std; pair <int,int> tab[500050]; int tab1[500050]; int comp(pair<int,int> first, pair<int,int> second) { if(first.first<second.first) { return 1; } else { if(first.first==second.first) { return first.second<second.second; } else { return 0; } } } int main() { int a,b,poz=1,w=0; cin >> a >> b; for(int i=0;i<a;i++) { cin >> tab[i].first; tab[i].second=i; } sort(tab,tab+a,comp); tab1[0]=tab[0].second; for(int i=0;i<a-1;i++) { if(tab[i+1].first!=tab[i].first) { tab1[poz]=tab[i+1].second; poz++; } } if(poz<b) { cout << "-1"; return 0; } sort(tab1,tab1+poz); for(int i=0;i<b;i++) { w+=tab1[i]-i; } cout << w; } |