#include <bits/stdc++.h>
using namespace std;
const int c=22, c2=(1<<c), inf=2e9;
int n, n2, si, k, kezd[c], veg[c], len[c], id[c], dp[c2], ki[c2], val[c], t[c], s[c], jo;
vector<int> sor;
void rec(int mask, int p) {
if (mask==0) return;
int ut=ki[mask];
int el=mask-(1<<ut);
s[id[ut]]=p, t[id[ut]]=dp[mask]-len[ut];
rec(el, p);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n >> k;
n2=(1<<n);
for (int i=0; i<n; i++) {
int a, b, c;
cin >> a >> b >> c;
kezd[i]=a, veg[i]=a+b-1, len[i]=c, id[i]=i;
}
for (int i=0; i<n; i++) {
for (int j=i+1; j<n; j++) {
if (kezd[j]<kezd[i]) {
swap(kezd[i], kezd[j]);
swap(veg[i], veg[j]);
swap(len[i], len[j]);
swap(id[i], id[j]);
}
}
}
for (int i=n-2; i>=0; i--) {
if (veg[i]+1==kezd[i+1]) {
veg[i]=veg[i+1];
}
}
dp[0]=1;
for (int i=1; i<n2; i++) {
dp[i]=inf;
}
for (int mask=0; mask<n2; mask++) {
int ert=dp[mask];
int pos=0;
for (int i=0; i<n; i++) {
if (ert>=kezd[i]) {
pos++;
}
}
if (pos==n || ert==inf) continue;
for (int i=0; i<n; i++) {
if ((mask & (1<<i)) && veg[i]>ert) sor.push_back(i);
}
si=sor.size();
for (int kov=0; kov<n; kov++) {
if (mask & (1<<kov)) continue;
if (ert+len[kov]>=kezd[kov]) continue;
int lep=mask+(1<<kov);
if ((pos==0 || ert>veg[pos-1]) && ((mask & (1<<pos))==0 || ert+len[kov]<kezd[pos]) && (si==0 || ert+len[kov]<kezd[sor[0]])) {
if (ert+len[kov]<dp[lep]) {
dp[lep]=ert+len[kov];
ki[lep]=kov;
}
continue;
}
for (int i=0; i<sor.size(); i++) {
int s=veg[sor[i]]+len[kov]+1;
if (s>=kezd[kov]) break;
if (i==si-1 || s<kezd[sor[i+1]]) {
if (s<dp[lep]) {
dp[lep]=s;
ki[lep]=kov;
}
break;
}
}
}
sor.clear();
}
if (k==1) {
if (dp[n2-1]<inf) {
rec(n2-1, 1);
jo=1;
}
}
if (k==2) {
for (int mask=0; mask<n2; mask++) {
if (!jo && dp[mask]<inf && dp[n2-1-mask]<inf) {
rec(mask, 1), rec(n2-1-mask, 2);
jo=1;
}
}
}
if (!jo) {
cout << "NO\n";
return 0;
}
cout << "YES\n";
for (int i=0; i<n; i++) {
cout << s[i] << " " << t[i] << "\n";
}
}| Subtask | Sum | Test | Verdict | Time | Memory | ||
|---|---|---|---|---|---|---|---|
| 0 | 0/0 | ||||||
| 1 | Accepted | 1ms | 316 KiB | ||||
| 2 | Accepted | 1ms | 316 KiB | ||||
| 3 | Accepted | 1ms | 316 KiB | ||||
| 4 | Accepted | 1ms | 316 KiB | ||||
| 1 | 5/5 | ||||||
| 5 | Accepted | 1ms | 316 KiB | ||||
| 6 | Accepted | 1ms | 316 KiB | ||||
| 7 | Accepted | 1ms | 316 KiB | ||||
| 8 | Accepted | 1ms | 384 KiB | ||||
| 9 | Accepted | 1ms | 316 KiB | ||||
| 2 | 8/8 | ||||||
| 10 | Accepted | 1ms | 520 KiB | ||||
| 11 | Accepted | 1ms | 316 KiB | ||||
| 12 | Accepted | 1ms | 316 KiB | ||||
| 13 | Accepted | 1ms | 316 KiB | ||||
| 14 | Accepted | 1ms | 316 KiB | ||||
| 15 | Accepted | 1ms | 316 KiB | ||||
| 16 | Accepted | 1ms | 316 KiB | ||||
| 17 | Accepted | 1ms | 316 KiB | ||||
| 18 | Accepted | 1ms | 316 KiB | ||||
| 19 | Accepted | 1ms | 316 KiB | ||||
| 20 | Accepted | 1ms | 316 KiB | ||||
| 21 | Accepted | 1ms | 444 KiB | ||||
| 3 | 7/7 | ||||||
| 22 | Accepted | 1ms | 316 KiB | ||||
| 23 | Accepted | 1ms | 428 KiB | ||||
| 24 | Accepted | 1ms | 316 KiB | ||||
| 25 | Accepted | 1ms | 316 KiB | ||||
| 26 | Accepted | 1ms | 316 KiB | ||||
| 27 | Accepted | 1ms | 316 KiB | ||||
| 28 | Accepted | 1ms | 316 KiB | ||||
| 29 | Accepted | 1ms | 508 KiB | ||||
| 30 | Accepted | 1ms | 328 KiB | ||||
| 31 | Accepted | 1ms | 316 KiB | ||||
| 32 | Accepted | 1ms | 316 KiB | ||||
| 33 | Accepted | 1ms | 316 KiB | ||||
| 4 | 12/12 | ||||||
| 34 | Accepted | 2ms | 564 KiB | ||||
| 35 | Accepted | 4ms | 820 KiB | ||||
| 36 | Accepted | 1ms | 316 KiB | ||||
| 37 | Accepted | 1ms | 316 KiB | ||||
| 38 | Accepted | 2ms | 396 KiB | ||||
| 39 | Accepted | 3ms | 316 KiB | ||||
| 40 | Accepted | 4ms | 576 KiB | ||||
| 41 | Accepted | 8ms | 692 KiB | ||||
| 42 | Accepted | 17ms | 952 KiB | ||||
| 43 | Accepted | 1ms | 316 KiB | ||||
| 44 | Accepted | 1ms | 316 KiB | ||||
| 45 | Accepted | 2ms | 376 KiB | ||||
| 46 | Accepted | 3ms | 316 KiB | ||||
| 47 | Accepted | 4ms | 316 KiB | ||||
| 48 | Accepted | 8ms | 692 KiB | ||||
| 49 | Accepted | 17ms | 948 KiB | ||||
| 5 | 13/13 | ||||||
| 50 | Accepted | 16ms | 820 KiB | ||||
| 51 | Accepted | 6ms | 820 KiB | ||||
| 52 | Accepted | 1ms | 316 KiB | ||||
| 53 | Accepted | 1ms | 316 KiB | ||||
| 54 | Accepted | 1ms | 316 KiB | ||||
| 55 | Accepted | 3ms | 316 KiB | ||||
| 56 | Accepted | 4ms | 564 KiB | ||||
| 57 | Accepted | 7ms | 628 KiB | ||||
| 58 | Accepted | 10ms | 920 KiB | ||||
| 59 | Accepted | 9ms | 952 KiB | ||||
| 6 | 15/15 | ||||||
| 60 | Accepted | 71ms | 2380 KiB | ||||
| 61 | Accepted | 26ms | 2372 KiB | ||||
| 62 | Accepted | 78ms | 2412 KiB | ||||
| 63 | Accepted | 76ms | 2392 KiB | ||||
| 64 | Accepted | 78ms | 2356 KiB | ||||
| 65 | Accepted | 76ms | 2360 KiB | ||||
| 66 | Accepted | 71ms | 2412 KiB | ||||
| 67 | Accepted | 79ms | 2356 KiB | ||||
| 68 | Accepted | 75ms | 2356 KiB | ||||
| 69 | Accepted | 1ms | 316 KiB | ||||
| 70 | Accepted | 1ms | 316 KiB | ||||
| 71 | Accepted | 1ms | 316 KiB | ||||
| 72 | Accepted | 1ms | 316 KiB | ||||
| 73 | Accepted | 1ms | 316 KiB | ||||
| 74 | Accepted | 1ms | 316 KiB | ||||
| 75 | Accepted | 2ms | 316 KiB | ||||
| 76 | Accepted | 2ms | 468 KiB | ||||
| 77 | Accepted | 2ms | 316 KiB | ||||
| 78 | Accepted | 3ms | 508 KiB | ||||
| 79 | Accepted | 3ms | 476 KiB | ||||
| 80 | Accepted | 3ms | 500 KiB | ||||
| 81 | Accepted | 4ms | 564 KiB | ||||
| 82 | Accepted | 4ms | 316 KiB | ||||
| 83 | Accepted | 4ms | 564 KiB | ||||
| 84 | Accepted | 9ms | 564 KiB | ||||
| 85 | Accepted | 8ms | 564 KiB | ||||
| 86 | Accepted | 8ms | 568 KiB | ||||
| 87 | Accepted | 18ms | 820 KiB | ||||
| 88 | Accepted | 19ms | 904 KiB | ||||
| 89 | Accepted | 17ms | 820 KiB | ||||
| 90 | Accepted | 35ms | 1380 KiB | ||||
| 91 | Accepted | 39ms | 1384 KiB | ||||
| 92 | Accepted | 35ms | 1308 KiB | ||||
| 93 | Accepted | 79ms | 2420 KiB | ||||
| 94 | Accepted | 71ms | 2392 KiB | ||||
| 95 | Accepted | 71ms | 2488 KiB | ||||
| 96 | Accepted | 71ms | 2292 KiB | ||||
| 7 | 15/15 | ||||||
| 97 | Accepted | 72ms | 2476 KiB | ||||
| 98 | Accepted | 41ms | 2540 KiB | ||||
| 99 | Accepted | 21ms | 2356 KiB | ||||
| 100 | Accepted | 35ms | 2356 KiB | ||||
| 101 | Accepted | 37ms | 2356 KiB | ||||
| 102 | Accepted | 1ms | 316 KiB | ||||
| 103 | Accepted | 1ms | 316 KiB | ||||
| 104 | Accepted | 1ms | 316 KiB | ||||
| 105 | Accepted | 1ms | 316 KiB | ||||
| 106 | Accepted | 2ms | 316 KiB | ||||
| 107 | Accepted | 2ms | 316 KiB | ||||
| 108 | Accepted | 3ms | 704 KiB | ||||
| 109 | Accepted | 3ms | 316 KiB | ||||
| 110 | Accepted | 4ms | 568 KiB | ||||
| 111 | Accepted | 4ms | 756 KiB | ||||
| 112 | Accepted | 8ms | 676 KiB | ||||
| 113 | Accepted | 9ms | 700 KiB | ||||
| 114 | Accepted | 10ms | 952 KiB | ||||
| 115 | Accepted | 18ms | 924 KiB | ||||
| 116 | Accepted | 24ms | 1464 KiB | ||||
| 117 | Accepted | 35ms | 1332 KiB | ||||
| 118 | Accepted | 54ms | 2392 KiB | ||||
| 119 | Accepted | 61ms | 2356 KiB | ||||
| 8 | 15/15 | ||||||
| 120 | Accepted | 331ms | 8496 KiB | ||||
| 121 | Accepted | 104ms | 8504 KiB | ||||
| 122 | Accepted | 85ms | 8500 KiB | ||||
| 123 | Accepted | 143ms | 8504 KiB | ||||
| 124 | Accepted | 170ms | 8500 KiB | ||||
| 125 | Accepted | 312ms | 8632 KiB | ||||
| 126 | Accepted | 115ms | 4404 KiB | ||||
| 127 | Accepted | 243ms | 8500 KiB | ||||
| 128 | Accepted | 129ms | 4484 KiB | ||||
| 129 | Accepted | 259ms | 8500 KiB | ||||
| 130 | Accepted | 160ms | 4328 KiB | ||||
| 131 | Accepted | 231ms | 8628 KiB | ||||
| 132 | Accepted | 108ms | 4404 KiB | ||||
| 133 | Accepted | 298ms | 8500 KiB | ||||
| 134 | Accepted | 143ms | 4404 KiB | ||||
| 135 | Accepted | 214ms | 8500 KiB | ||||
| 136 | Accepted | 142ms | 4372 KiB | ||||
| 137 | Accepted | 303ms | 8500 KiB | ||||
| 138 | Accepted | 314ms | 8500 KiB | ||||
| 9 | 10/10 | ||||||
| 139 | Accepted | 1.393s | 33076 KiB | ||||
| 140 | Accepted | 291ms | 33076 KiB | ||||
| 141 | Accepted | 375ms | 33076 KiB | ||||
| 142 | Accepted | 512ms | 33076 KiB | ||||
| 143 | Accepted | 726ms | 33192 KiB | ||||
| 144 | Accepted | 1.335s | 33096 KiB | ||||
| 145 | Accepted | 703ms | 16692 KiB | ||||
| 146 | Accepted | 765ms | 33076 KiB | ||||
| 147 | Accepted | 425ms | 16696 KiB | ||||
| 148 | Accepted | 1.478s | 33112 KiB | ||||
| 149 | Accepted | 646ms | 16692 KiB | ||||
| 150 | Accepted | 1.187s | 33248 KiB | ||||
| 151 | Accepted | 517ms | 16692 KiB | ||||
| 152 | Accepted | 884ms | 33076 KiB | ||||
| 153 | Accepted | 554ms | 16692 KiB | ||||
| 154 | Accepted | 1.044s | 33076 KiB | ||||
| 155 | Accepted | 595ms | 17016 KiB | ||||
| 156 | Accepted | 1.217s | 33224 KiB | ||||
| 157 | Accepted | 1.37s | 33256 KiB | ||||