#include <bits/stdc++.h>
using namespace std;
int n,c;
vector<pair<int, int>> klocki;
int wynik(int maska){
vector<int> wybrane;
int wynik = 0;
for(int i = 0; i < n; i++){
if(maska & (1<<i)){
wybrane.push_back(i);
}
}
for(int ind: wybrane){
wynik += klocki[ind].first;
}
for(int i=1; i<wybrane.size(); i++){
if(klocki[wybrane[i]].second != klocki[wybrane[i-1]].second)
wynik -= c;
}
return wynik;
}
int main(){
cin>>n>>c;
for(int i=0;i<n;i++){
int a,b;
cin>>a>>b;
klocki.push_back({a,b});
}
sort(klocki.begin(), klocki.end());
int N = 1 << n;
int maks = 0;
for(int i=0; i<N; i++){
maks = max(maks, wynik(i));
}
cout<<maks;
}
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 | #include <bits/stdc++.h> using namespace std; int n,c; vector<pair<int, int>> klocki; int wynik(int maska){ vector<int> wybrane; int wynik = 0; for(int i = 0; i < n; i++){ if(maska & (1<<i)){ wybrane.push_back(i); } } for(int ind: wybrane){ wynik += klocki[ind].first; } for(int i=1; i<wybrane.size(); i++){ if(klocki[wybrane[i]].second != klocki[wybrane[i-1]].second) wynik -= c; } return wynik; } int main(){ cin>>n>>c; for(int i=0;i<n;i++){ int a,b; cin>>a>>b; klocki.push_back({a,b}); } sort(klocki.begin(), klocki.end()); int N = 1 << n; int maks = 0; for(int i=0; i<N; i++){ maks = max(maks, wynik(i)); } cout<<maks; } |
English