UOJ Logo lqhsr的博客

博客

30求助

2019-10-28 09:36:17 By lqhsr

WA on #3 #4

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
struct node {
    int x,y;
}a[1000005];
int read(){
    int x=0;char ch=getchar();
    while(ch>'9'||ch<'0')ch=getchar();
    while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    return x;
}
vector<int>mem;
bool cmp(node aa,node bb){
    return aa.x==bb.x?(aa.y<bb.y):(aa.x<bb.x);
}
signed main(){
    n=read();
    for(int i=1;i<=n;i++)a[i].x=read(),a[i].y=read();
    m=read();
    int ty,cx,cy;
    for(int l=1;l<=m;l++){
        ty=read(),cx=read(),cy=read();
        if(ty==1){
            a[++n].x=cx,a[n].y=cy;
            sort(a+1,a+n+1,cmp);
        }else if(ty==2){
            int l=1,r=n,mid,mem;
            for(int i=1;i<=n;i++){
                if(a[i].x==cx&&a[i].y==cy)mid=i;
            }
            a[mid].x=0x7fffffff,a[mid].y=0x7fffffff;
            sort(a+1,a+n+1,cmp);
            --n;
        }else {
            mem.clear();
            for(int i=1;i<=n;i++){
                if(a[i].x<cx&&a[i].y<cy){mem.push_back(i);continue;}
                if(a[i].x>=cx&&a[i].y>=cy)break;
            }
            int ans=0;
            for(int i=0;i<mem.size();i++){
                int ji=mem[i];
                for(int j=0;j<mem.size();j++){
                    if((a[ji].x==a[mem[j]].x&&a[ji].y!=a[mem[j]].y)||(a[mem[j]].y==a[ji].y&&a[ji].x!=a[mem[j]].x)||(a[ji].x>a[mem[j]].x&&a[ji].y<a[mem[j]].y)||(a[ji].x<a[mem[j]].x&&a[ji].y>a[mem[j]].y))
                        ++ans;
                }
            }
            printf("%d\n",ans/2);
        }
    }
}

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。