代码:
#include <bits/stdc++.h>
using namespace std;
struct node{
int x,y;
}e[55];
int n,T;
void mysort(int z,int x){
for(int i=x;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(abs(e[i].y-abs(e[i].x-z))>abs(e[j].y-abs(e[j].x-z))){
swap(e[i],e[j]);
}
}
}
}
/*bool cmp(node a,node b){
return a.y>b.y;
}*/
void read(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>e[i].x>>e[i].y;
}
for(int i=1;i<=n;i++){
if(abs(e[i].x)>e[i].y){
cout<<"Notabletocatch"<<endl;
return ;
}
}
//cout<<true;
//sort(e+1,e+1+n,cmp);
int zx=0;
for(int i=1;i<=n;i++){
mysort(zx,i);
for(int j=i;j<=n;j++){
if(abs(e[i].x-zx)>e[i].y||(e[i].y==0&&e[i].x!=zx)){
cout<<"Notabletocatch"<<endl;
return ;
}
}
if(e[i].y<0||(e[i].y==0&&zx!=e[i].x)){
cout<<"Notabletocatch"<<endl;
return ;
}
if(abs(e[i].x-zx)>e[i].y){
cout<<"Notabletocatch"<<endl;
return ;
}else{
for(int j=i+1;j<=n;j++){
e[j].y-=e[i].y;
if(e[j].y<0||(e[j].y==0&&zx!=e[j].x)){
//cout<<i<<endl;
cout<<"Notabletocatch"<<endl;
return ;
}
}
zx=e[i].x;
}
/*for(int j=i;j<=n;j++){
cout<<e[j].x<<" "<<e[j].y<<endl;
}
cout<<i<<" "<<zx<<endl;
cout<<endl;
*/
}
cout<<"Abletocatch"<<endl;
return ;
}
int main(){
cin>>T;
while(T--){
read();
}
return 0;
}
恳请各位大佬/神犇指点迷津