#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
constexpr int N = 7e3;
vector<pair<int,ll>> zelki[N+9];
ll dp1[2][N+9];
ll dp2[N+9];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,k,m,a,b,c;
cin >> n >> k >> m;
for (int x=0;x<n;x++){
cin >> a >> b >> c;
zelki[a].push_back({b,c});
}
for (int x=0;x<=m;x++)dp1[0][x]=1e18;
dp1[0][0]=0;
for (int ko=1;ko<=k;ko++){
for (int x=0;x<=m;x++)dp1[ko%2][x]=1e18;
for (int x=0;x<m;x++){
for (pair<int,ll> ter:zelki[ko]){
dp1[ko%2][(x+ter.first)%m] = min(dp1[ko%2][(x+ter.first)%m],dp1[(ko+1)%2][x]+ter.second);
}
}
}
for (int x=0;x<m;x++){
dp2[x]=dp1[k%2][x];
}
dp2[0]=0;
for (int t=1;t<=14;t++){
for (int x=0;x<m;x++){
for (int y=x;y<m;y++){
dp2[(x+y)%m]=min(dp2[(x+y)%m],dp2[x]+dp2[y]);
}
}
}
for (int x=0;x<m;x++){
if (dp2[x]==1e18)dp2[x]=-1;
cout << dp2[x] << '\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 38 39 40 41 42 43 44 45 46 | #include <bits/stdc++.h> using namespace std; typedef long long int ll; constexpr int N = 7e3; vector<pair<int,ll>> zelki[N+9]; ll dp1[2][N+9]; ll dp2[N+9]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k,m,a,b,c; cin >> n >> k >> m; for (int x=0;x<n;x++){ cin >> a >> b >> c; zelki[a].push_back({b,c}); } for (int x=0;x<=m;x++)dp1[0][x]=1e18; dp1[0][0]=0; for (int ko=1;ko<=k;ko++){ for (int x=0;x<=m;x++)dp1[ko%2][x]=1e18; for (int x=0;x<m;x++){ for (pair<int,ll> ter:zelki[ko]){ dp1[ko%2][(x+ter.first)%m] = min(dp1[ko%2][(x+ter.first)%m],dp1[(ko+1)%2][x]+ter.second); } } } for (int x=0;x<m;x++){ dp2[x]=dp1[k%2][x]; } dp2[0]=0; for (int t=1;t<=14;t++){ for (int x=0;x<m;x++){ for (int y=x;y<m;y++){ dp2[(x+y)%m]=min(dp2[(x+y)%m],dp2[x]+dp2[y]); } } } for (int x=0;x<m;x++){ if (dp2[x]==1e18)dp2[x]=-1; cout << dp2[x] << '\n'; } return 0; } |
English