#include <iostream>
#include <algorithm>
using namespace std;
struct Kubeczki{
int rozmiar;
int temperatura;
bool operator<(const Kubeczki& inny){
return temperatura < inny.temperatura;
}
};
int main()
{
ios_base::sync_with_stdio(false);
int t = 0, n=0, bilans = 0, iter = 0, poz_rozmiar = 0, ob_temp = 0;
bool is_full = false, is_end = false;
cin>>t;
for(int i=0; i<t; ++i){
cin>>n;
int tab[3][n];
Kubeczki k_now[n];
Kubeczki k_new[n];
for(int j=0; j<n; ++j){
cin>>tab[0][j];
cin>>tab[1][j];
cin>>tab[2][j];
k_now[j].rozmiar = tab[0][j];
k_now[j].temperatura = tab[1][j];
k_new[j].rozmiar = tab[0][j];
k_new[j].temperatura = tab[2][j];
}
std::sort(&k_now[0], &k_now[n]);
std::sort(&k_new[0], &k_new[n]);
for(int j=0; j<n; ++j){
is_full = false;
poz_rozmiar = k_new[j].rozmiar;
while(!is_full){
if(k_now[iter].rozmiar < poz_rozmiar){
ob_temp = (k_now[iter].rozmiar * k_now[iter].temperatura) + ob_temp;
poz_rozmiar -= k_now[iter].rozmiar;
k_now[iter].rozmiar = 0;
iter++;
}
else{
if(k_now[iter].rozmiar >= poz_rozmiar){
if((k_now[iter].rozmiar - poz_rozmiar) == 0){
ob_temp = ((k_now[iter].rozmiar) * k_now[iter].temperatura) + ob_temp;
}else{
ob_temp = (poz_rozmiar * k_now[iter].temperatura) + ob_temp;
}
k_now[iter].rozmiar -= poz_rozmiar;
is_full = true;
bilans += k_new[j].temperatura * k_new[j].rozmiar - ob_temp;
if(k_now[iter].rozmiar == 0){
iter++;
}
}
}
}
if(bilans < 0){
is_end = true;
}
is_full = false;
ob_temp = 0;
poz_rozmiar = 0;
}
if(bilans == 0 && is_end == false){
cout<<"TAK"<<endl;
}else{
cout<<"NIE"<<endl;
}
bilans = 0;
iter = 0;
is_end = false;
}
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 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 | #include <iostream> #include <algorithm> using namespace std; struct Kubeczki{ int rozmiar; int temperatura; bool operator<(const Kubeczki& inny){ return temperatura < inny.temperatura; } }; int main() { ios_base::sync_with_stdio(false); int t = 0, n=0, bilans = 0, iter = 0, poz_rozmiar = 0, ob_temp = 0; bool is_full = false, is_end = false; cin>>t; for(int i=0; i<t; ++i){ cin>>n; int tab[3][n]; Kubeczki k_now[n]; Kubeczki k_new[n]; for(int j=0; j<n; ++j){ cin>>tab[0][j]; cin>>tab[1][j]; cin>>tab[2][j]; k_now[j].rozmiar = tab[0][j]; k_now[j].temperatura = tab[1][j]; k_new[j].rozmiar = tab[0][j]; k_new[j].temperatura = tab[2][j]; } std::sort(&k_now[0], &k_now[n]); std::sort(&k_new[0], &k_new[n]); for(int j=0; j<n; ++j){ is_full = false; poz_rozmiar = k_new[j].rozmiar; while(!is_full){ if(k_now[iter].rozmiar < poz_rozmiar){ ob_temp = (k_now[iter].rozmiar * k_now[iter].temperatura) + ob_temp; poz_rozmiar -= k_now[iter].rozmiar; k_now[iter].rozmiar = 0; iter++; } else{ if(k_now[iter].rozmiar >= poz_rozmiar){ if((k_now[iter].rozmiar - poz_rozmiar) == 0){ ob_temp = ((k_now[iter].rozmiar) * k_now[iter].temperatura) + ob_temp; }else{ ob_temp = (poz_rozmiar * k_now[iter].temperatura) + ob_temp; } k_now[iter].rozmiar -= poz_rozmiar; is_full = true; bilans += k_new[j].temperatura * k_new[j].rozmiar - ob_temp; if(k_now[iter].rozmiar == 0){ iter++; } } } } if(bilans < 0){ is_end = true; } is_full = false; ob_temp = 0; poz_rozmiar = 0; } if(bilans == 0 && is_end == false){ cout<<"TAK"<<endl; }else{ cout<<"NIE"<<endl; } bilans = 0; iter = 0; is_end = false; } return 0; } |
English