#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; #define st first #define nd second bool compare(const pair<long long, pair<long long, long long > >&i, const pair<long long, pair<long long, long long> >&j) { return i.nd.st-i.nd.nd < j.nd.st - j.nd.nd; } pair<long long, pair<long long, long long> > para[101]; long long n, m; long long aktualny_czas = 0; void przydziel() { sort(para, para+n, compare); long long max = 0; long long przydziel = 0; long long zero = 0; for(long long i = 0; i < n; i++) { if(para[i].nd.nd == 0) { zero++; continue; } if(aktualny_czas >= para[i].st && aktualny_czas > (para[i].nd.st - para[i].nd.nd)) { max++; } if(aktualny_czas >= para[i].st && przydziel != m && para[i].nd.nd != 0) { para[i].nd.nd--; przydziel++; } } if(max >= 1) { puts("NIE"); exit(0);}; if(zero == n) {puts("TAK"); exit(0);}; } int main() { scanf("%lld%lld", &n, &m); for(int i = 0; i < n; i++) { scanf("%lld%lld%lld", ¶[i].st, ¶[i].nd.st, ¶[i].nd.nd); } while(true) { przydziel(); aktualny_czas++; } }
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 53 54 55 56 57 58 59 60 61 | #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; #define st first #define nd second bool compare(const pair<long long, pair<long long, long long > >&i, const pair<long long, pair<long long, long long> >&j) { return i.nd.st-i.nd.nd < j.nd.st - j.nd.nd; } pair<long long, pair<long long, long long> > para[101]; long long n, m; long long aktualny_czas = 0; void przydziel() { sort(para, para+n, compare); long long max = 0; long long przydziel = 0; long long zero = 0; for(long long i = 0; i < n; i++) { if(para[i].nd.nd == 0) { zero++; continue; } if(aktualny_czas >= para[i].st && aktualny_czas > (para[i].nd.st - para[i].nd.nd)) { max++; } if(aktualny_czas >= para[i].st && przydziel != m && para[i].nd.nd != 0) { para[i].nd.nd--; przydziel++; } } if(max >= 1) { puts("NIE"); exit(0);}; if(zero == n) {puts("TAK"); exit(0);}; } int main() { scanf("%lld%lld", &n, &m); for(int i = 0; i < n; i++) { scanf("%lld%lld%lld", ¶[i].st, ¶[i].nd.st, ¶[i].nd.nd); } while(true) { przydziel(); aktualny_czas++; } } |