#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define REP(i,n) for(int i=0;i<(n);++i) #define FOR(i,a,b) for(int i=(a);i<=(b);++i) #define FORD(i,a,b) for(int i=(a);i>=(b);--i) #define foreach(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i) #define all(c) (c).begin(),(c).end() #define scanf(...) scanf(__VA_ARGS__)?:0 #define e1 first #define e2 second #define mp make_pair using namespace std; typedef long long ll; typedef pair<int,int> pii; int n,m,mint=1000000,maxt=0,p[101],k[101],c[101],s[101],w[1000001]; int main() { scanf("%d%d",&n,&m); FOR(i,1,n) scanf("%d%d%d",&p[i],&k[i],&c[i]),s[i]=i,mint=min(p[i],mint),maxt=max(k[i],maxt); sort(s+1,s+n+1,[](int a,int b){return k[a]<k[b];}); FOR(t,mint,maxt) { FOR(i,1,n) { if (t==k[s[i]] && c[s[i]]) puts("NIE"),exit(0); if (t<p[s[i]] || t>=k[s[i]] || c[s[i]]==0) continue; if (k[s[i]]-t==c[s[i]]) w[t]++; if (w[t]>m) puts("NIE"),exit(0); } FOR(i,1,n) { if (t<p[s[i]] || t>=k[s[i]] || c[s[i]]==0) continue; if (k[s[i]]-t==c[s[i]]) c[s[i]]--; else if (w[t]<m) w[t]++,c[s[i]]--; } } puts("TAK"); }
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 | #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define REP(i,n) for(int i=0;i<(n);++i) #define FOR(i,a,b) for(int i=(a);i<=(b);++i) #define FORD(i,a,b) for(int i=(a);i>=(b);--i) #define foreach(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i) #define all(c) (c).begin(),(c).end() #define scanf(...) scanf(__VA_ARGS__)?:0 #define e1 first #define e2 second #define mp make_pair using namespace std; typedef long long ll; typedef pair<int,int> pii; int n,m,mint=1000000,maxt=0,p[101],k[101],c[101],s[101],w[1000001]; int main() { scanf("%d%d",&n,&m); FOR(i,1,n) scanf("%d%d%d",&p[i],&k[i],&c[i]),s[i]=i,mint=min(p[i],mint),maxt=max(k[i],maxt); sort(s+1,s+n+1,[](int a,int b){return k[a]<k[b];}); FOR(t,mint,maxt) { FOR(i,1,n) { if (t==k[s[i]] && c[s[i]]) puts("NIE"),exit(0); if (t<p[s[i]] || t>=k[s[i]] || c[s[i]]==0) continue; if (k[s[i]]-t==c[s[i]]) w[t]++; if (w[t]>m) puts("NIE"),exit(0); } FOR(i,1,n) { if (t<p[s[i]] || t>=k[s[i]] || c[s[i]]==0) continue; if (k[s[i]]-t==c[s[i]]) c[s[i]]--; else if (w[t]<m) w[t]++,c[s[i]]--; } } puts("TAK"); } |