#include <cstdio> #include <algorithm> #include <iostream> using namespace std; struct jp{ int a, b, c, d; //a-poczatek b-koniec c-dlugosc d-ile moge poczekac }; jp t[1000]; pair<int,int>pom[1000]; int n, m, ip, hh, maxi; bool basaur; bool operator <(jp x, jp y) { if(x.a==y.a)return x.b<y.b; return x.a<y.a; } int main() { scanf("%d%d", &n, &m); if(m>=n){printf("TAK\n"); return 0;} for(int i=1; i<=n; i++) { scanf("%d%d%d", &t[i].a, &t[i].b, &t[i].c); t[i].d=t[i].b-t[i].a-t[i].c; if(maxi<t[i].b)maxi=t[i].b; //printf("%d %d %d %d\n", t[i].a, t[i].b, t[i].c, t[i].d); } sort(t+1, t+n+1); reverse(t+1, t+n+1); for(int i=0; i<=maxi; i++) { ip=0; for(int j=1; j<=n; j++)if(t[j].a<=i&&t[j].b>i&&t[j].c>0){ip++; pom[ip]=make_pair(t[j].d, j);} if(ip==0)continue; if(ip<=m) { for(int j=1; j<=ip; j++) { t[pom[j].second].c--; } } else { sort(pom+1, pom+ip+1); for(int j=1; j<=m; j++)t[pom[j].second].c--; for(int j=m+1; j<=ip; j++)t[pom[j].second].d--; if(t[pom[m+1].second].d<0){printf("NIE\n"); return 0;} } } printf("TAK\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 47 48 49 50 51 52 | #include <cstdio> #include <algorithm> #include <iostream> using namespace std; struct jp{ int a, b, c, d; //a-poczatek b-koniec c-dlugosc d-ile moge poczekac }; jp t[1000]; pair<int,int>pom[1000]; int n, m, ip, hh, maxi; bool basaur; bool operator <(jp x, jp y) { if(x.a==y.a)return x.b<y.b; return x.a<y.a; } int main() { scanf("%d%d", &n, &m); if(m>=n){printf("TAK\n"); return 0;} for(int i=1; i<=n; i++) { scanf("%d%d%d", &t[i].a, &t[i].b, &t[i].c); t[i].d=t[i].b-t[i].a-t[i].c; if(maxi<t[i].b)maxi=t[i].b; //printf("%d %d %d %d\n", t[i].a, t[i].b, t[i].c, t[i].d); } sort(t+1, t+n+1); reverse(t+1, t+n+1); for(int i=0; i<=maxi; i++) { ip=0; for(int j=1; j<=n; j++)if(t[j].a<=i&&t[j].b>i&&t[j].c>0){ip++; pom[ip]=make_pair(t[j].d, j);} if(ip==0)continue; if(ip<=m) { for(int j=1; j<=ip; j++) { t[pom[j].second].c--; } } else { sort(pom+1, pom+ip+1); for(int j=1; j<=m; j++)t[pom[j].second].c--; for(int j=m+1; j<=ip; j++)t[pom[j].second].d--; if(t[pom[m+1].second].d<0){printf("NIE\n"); return 0;} } } printf("TAK\n"); return 0; } |