import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.PriorityQueue; public class sze { static class Task implements Comparable<Task> { int p; int k; int c; public Task(int p, int k, int c) { this.p = p; this.k = k; this.c = c; } @Override public int compareTo(Task o) { return (k - p - c) - (o.k - o.p - o.c); } @Override public String toString() { // TODO Auto-generated method stub return "" + p + " " + k + " " + c; } } public static void main(String[] args) { ArrayList<PriorityQueue<Task>> tasks = new ArrayList<PriorityQueue<Task>>(1000001); for (int i = 0; i <= 1000000; i++) { tasks.add(new PriorityQueue<Task>()); } int n = R.i(); int m = R.i(); int p, k, c; PriorityQueue<Task> queue, prev; Task t; for (int i = 0; i < n; i++) { p = R.i(); k = R.i(); c = R.i(); t = new Task(p, k, c); tasks.get(k).add(t); } int mm; for (int i = 1000000; i > 0; i--) { queue = tasks.get(i); prev = tasks.get(i - 1); if (!queue.isEmpty()) { mm = m; while (!queue.isEmpty()) { t = queue.poll(); if (mm > 0) { t.k--; t.c--; if (t.c > 0) { prev.add(t); } mm--; } else { if (t.k - t.p - t.c <= 0) { System.out.println("NIE"); return; } t.k--; prev.add(t); } } } } System.out.println("TAK"); } static class R { static InputStream is=new BufferedInputStream(System.in); static int b='\n'; static void next(){try{b=is.read();}catch(Exception e){}} static void skip(){while(b=='\n'||b==' '||b=='\r'||b=='\t')next();} static char c(){skip();char c=(char)b;next();return c;} static int i(){skip();int i=0;while(b>='0'&&b<='9'){i=10*i+(b-'0');next();}return i;} static long l(){skip();long i=0;while(b>='0'&&b<='9'){i=10*i+(b-'0');next();}return i;} } static class W { static OutputStream os=new BufferedOutputStream(System.out,4096); static void b(int b){try{os.write(b);}catch(Exception e){}} static void c(char c){b(c);} static void cs(char c){c(c);space();} static void cn(char c){c(c);newLine();} static void i(int i){if(i>9)i(i/10);b('0'+(i%10));} static void is(int i){i(i);space();} static void in(int i){i(i);newLine();} static void l(long l){if(l>9)l(l/10);b('0'+(int)(l%10));} static void ls(long l){l(l);space();} static void ln(long l){l(l);newLine();} static void s(String s){try{os.write(s.getBytes());}catch(Exception e){}} static void ss(String s){s(s);space();} static void sn(String s){s(s);newLine();} static void tn(boolean b){sn(b?"TAK":"NIE");} static void space(){b(' ');} static void newLine(){b('\n');} static void flush(){try{os.flush();}catch(Exception e){}}; } static class T { static List<String> s=new ArrayList<String>(); static List<Long> t=new ArrayList<Long>(); static void t(String n){s.add(n);t.add(System.currentTimeMillis());} static void err(){t.add(System.currentTimeMillis());System.err.println();for(int i=0;i<s.size();i++){System.err.println(s.get(i)+": "+(t.get(i+1)-t.get(i)));}System.err.println("TOTAL: "+(t.get(t.size() - 1)-t.get(0)));System.err.flush();} } }
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.PriorityQueue; public class sze { static class Task implements Comparable<Task> { int p; int k; int c; public Task(int p, int k, int c) { this.p = p; this.k = k; this.c = c; } @Override public int compareTo(Task o) { return (k - p - c) - (o.k - o.p - o.c); } @Override public String toString() { // TODO Auto-generated method stub return "" + p + " " + k + " " + c; } } public static void main(String[] args) { ArrayList<PriorityQueue<Task>> tasks = new ArrayList<PriorityQueue<Task>>(1000001); for (int i = 0; i <= 1000000; i++) { tasks.add(new PriorityQueue<Task>()); } int n = R.i(); int m = R.i(); int p, k, c; PriorityQueue<Task> queue, prev; Task t; for (int i = 0; i < n; i++) { p = R.i(); k = R.i(); c = R.i(); t = new Task(p, k, c); tasks.get(k).add(t); } int mm; for (int i = 1000000; i > 0; i--) { queue = tasks.get(i); prev = tasks.get(i - 1); if (!queue.isEmpty()) { mm = m; while (!queue.isEmpty()) { t = queue.poll(); if (mm > 0) { t.k--; t.c--; if (t.c > 0) { prev.add(t); } mm--; } else { if (t.k - t.p - t.c <= 0) { System.out.println("NIE"); return; } t.k--; prev.add(t); } } } } System.out.println("TAK"); } static class R { static InputStream is=new BufferedInputStream(System.in); static int b='\n'; static void next(){try{b=is.read();}catch(Exception e){}} static void skip(){while(b=='\n'||b==' '||b=='\r'||b=='\t')next();} static char c(){skip();char c=(char)b;next();return c;} static int i(){skip();int i=0;while(b>='0'&&b<='9'){i=10*i+(b-'0');next();}return i;} static long l(){skip();long i=0;while(b>='0'&&b<='9'){i=10*i+(b-'0');next();}return i;} } static class W { static OutputStream os=new BufferedOutputStream(System.out,4096); static void b(int b){try{os.write(b);}catch(Exception e){}} static void c(char c){b(c);} static void cs(char c){c(c);space();} static void cn(char c){c(c);newLine();} static void i(int i){if(i>9)i(i/10);b('0'+(i%10));} static void is(int i){i(i);space();} static void in(int i){i(i);newLine();} static void l(long l){if(l>9)l(l/10);b('0'+(int)(l%10));} static void ls(long l){l(l);space();} static void ln(long l){l(l);newLine();} static void s(String s){try{os.write(s.getBytes());}catch(Exception e){}} static void ss(String s){s(s);space();} static void sn(String s){s(s);newLine();} static void tn(boolean b){sn(b?"TAK":"NIE");} static void space(){b(' ');} static void newLine(){b('\n');} static void flush(){try{os.flush();}catch(Exception e){}}; } static class T { static List<String> s=new ArrayList<String>(); static List<Long> t=new ArrayList<Long>(); static void t(String n){s.add(n);t.add(System.currentTimeMillis());} static void err(){t.add(System.currentTimeMillis());System.err.println();for(int i=0;i<s.size();i++){System.err.println(s.get(i)+": "+(t.get(i+1)-t.get(i)));}System.err.println("TOTAL: "+(t.get(t.size() - 1)-t.get(0)));System.err.flush();} } } |