//Szeregowanie (SZE) #include <cstdio> #include <algorithm> using namespace std; int n,m,cnt,ii,i,j,e,a[105],b[105],c[105],k[105],seg[405],z[405]; bool cmpa(int i, int j) { return a[i]<a[j]; } bool cmpb(int i, int j) { return b[i]<b[j]; } int main() { scanf("%d%d",&n,&m); for (i=0; i<n; i++) { scanf("%d%d%d",&a[i],&b[i],&c[i]); k[i]=i; } sort(k,k+n,cmpa); cnt=1; for (ii=0; ii<n; ii++) { i=k[ii]; if (a[i]!=seg[cnt-1]) seg[cnt++]=a[i]; } seg[cnt]=4000000; sort(k,k+n,cmpb); for (ii=0; ii<n; ii++) { i=k[ii]; for (j=0; j<cnt; j++) if (seg[j]>=a[i] && z[j]<m) { if (seg[j+1]-seg[j]>c[i]) { for (e=++cnt; e>j; e--) { seg[e]=seg[e-1]; z[e]=z[e-1]; } seg[j+1]=seg[j]+c[i]; } c[i]-=seg[j+1]-seg[j]; z[j]++; if (c[i]==0) { if (seg[j+1]>b[i]) { puts("NIE"); return 0; } break; } } } puts("TAK"); 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 | //Szeregowanie (SZE) #include <cstdio> #include <algorithm> using namespace std; int n,m,cnt,ii,i,j,e,a[105],b[105],c[105],k[105],seg[405],z[405]; bool cmpa(int i, int j) { return a[i]<a[j]; } bool cmpb(int i, int j) { return b[i]<b[j]; } int main() { scanf("%d%d",&n,&m); for (i=0; i<n; i++) { scanf("%d%d%d",&a[i],&b[i],&c[i]); k[i]=i; } sort(k,k+n,cmpa); cnt=1; for (ii=0; ii<n; ii++) { i=k[ii]; if (a[i]!=seg[cnt-1]) seg[cnt++]=a[i]; } seg[cnt]=4000000; sort(k,k+n,cmpb); for (ii=0; ii<n; ii++) { i=k[ii]; for (j=0; j<cnt; j++) if (seg[j]>=a[i] && z[j]<m) { if (seg[j+1]-seg[j]>c[i]) { for (e=++cnt; e>j; e--) { seg[e]=seg[e-1]; z[e]=z[e-1]; } seg[j+1]=seg[j]+c[i]; } c[i]-=seg[j+1]-seg[j]; z[j]++; if (c[i]==0) { if (seg[j+1]>b[i]) { puts("NIE"); return 0; } break; } } } puts("TAK"); return 0; } |