#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; } |
English