這道題看起來很嚇人,但事實上看懂後會發現,其根本沒有任何技術含量,作這道題其實要考慮的就是天天最先結束的一場的結束時間以及最晚開始的一場的開始時間,若是結束時間早於開始時間,那麼OK就這兩場,不然輸出無解,要注意的是,若是想在傳入時就把天天分開,記得標記每一場的序號。ios
代碼以下:ui
#include<cstdlib> #include<cstdio> #include<iostream> using namespace std; long long int i_day,i_huiyi,temp_1,temp_2,temp_3; long long int i_hui[21][500000][3]; long long int i_nob[21]; long long int i_min,nob_1,i_max=80000000,nob_2; int main() { cin>>i_huiyi;cin>>i_day; for(int i=0;i<i_huiyi;i++) { cin>>temp_1;cin>>temp_2;cin>>temp_3; i_hui[temp_3][i_nob[temp_3]][0]=temp_1; i_hui[temp_3][i_nob[temp_3]][1]=temp_2; i_hui[temp_3][i_nob[temp_3]][2]=i+1; i_nob[temp_3]++; } for(int i=1;i<=i_day;i++) { for(int m=0;m<i_nob[i];m++) { if(i_hui[i][m][0]>i_min) { i_min=i_hui[i][m][0]; nob_1=i_hui[i][m][2]; } if(i_hui[i][m][1]<i_max) { i_max=i_hui[i][m][1]; nob_2=i_hui[i][m][2]; } } if(i_min>i_max) { cout<<"TAK"<<" "<<nob_1<<" "<<nob_2<<endl; i_min=0;i_max=80000000; } else { cout<<"NIE"<<endl; i_min=0;i_max=80000000; } } return 0; }