求助大佬
查看原帖
求助大佬
359430
江户川コナン楼主2021/8/7 12:05

求助大佬!只有50pts

代码:

#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;
}

恳请各位大佬/神犇指点迷津

2021/8/7 12:05
加载中...