QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#56793#3873. TowersWilson_Lee0 998ms111088kbC++2.8kb2022-10-21 16:18:452022-10-21 16:18:46

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-10-21 16:18:46]
  • Judged
  • Verdict: 0
  • Time: 998ms
  • Memory: 111088kb
  • [2022-10-21 16:18:45]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;

typedef pair<int,int> pa;
const int MAXN=1e6+5;
struct node
{
    int x,y;
}p[MAXN];
vector<pa>X[MAXN],Y[MAXN];
int numx[MAXN],numy[MAXN],ans[MAXN];
int main()
{
    //freopen("tower.in","r",stdin);
    //freopen("tower.out","w",stdout);
    int n;
    cin>>n;
    for(int i=1;i<=n;++i) scanf("%d %d",&p[i].x,&p[i].y),numx[i]=p[i].x,numy[i]=p[i].y;
    sort(numx+1,numx+n+1),sort(numy+1,numy+n+1);
    int lenx=unique(numx+1,numx+n+1)-numx-1,leny=unique(numy+1,numy+n+1)-numy-1;
    for(int i=1;i<=n;++i)
    {
        p[i].x=lower_bound(numx+1,numx+lenx+1,p[i].x)-numx;
        p[i].y=lower_bound(numy+1,numy+leny+1,p[i].y)-numy;
        printf("%d %d\n",p[i].x,p[i].y);
    }
    for(int i=1;i<=n;++i) X[p[i].x].push_back({p[i].y,i});
    for(int i=1;i<=lenx;++i)
    {
        sort(X[i].begin(),X[i].end());
        int si=X[i].size();
        Y[X[i][0].first].push_back({i,X[i][0].second});
        if(si>=2) Y[X[i][si-1].first].push_back({i,X[i][si-1].second});
    }
    for(int i=1;i<=leny;++i)
    {
        //cout<<i<<endl;
        if(Y[i].size()<=2)
        {
            for(auto j:Y[i]) ans[j.second]=1;
            continue;
        }
        //cout<<i<<endl;
        sort(Y[i].begin(),Y[i].end());
        int si=Y[i].size();
        ans[Y[i][0].second]=ans[Y[i][si-1].second]=1;
        vector<pa>tmp;
        tmp.push_back(Y[i][0]),tmp.push_back(Y[i][si-1]);
        for(int j=1;j<si-1;++j)
        {
            ans[Y[i][j].second]=0;
            pa now={i,Y[i][j].second};
            int pos=upper_bound(X[Y[i][j].first].begin(),X[Y[i][j].first].end(),now)-X[Y[i][j].first].begin();
            if(pos<X[Y[i][j].first].size()-1) Y[X[Y[i][j].first][pos].first].push_back({Y[i][j].first,X[Y[i][j].first][pos].second});
            else tmp.push_back(Y[i][j]);
        }
        Y[i]=tmp;
    }
    //for(int i=1;i<=n;++i) if(ans[i]) putchar(i+'A'-1);
    //return 0;
    for(int i=leny;i>=1;--i)
    {
        //cout<<Y[i].size()<<endl;
        if(Y[i].size()<=2)
        {
            for(auto j:Y[i]) ans[j.second]=1;
            continue;
        }
        sort(Y[i].begin(),Y[i].end());
        int si=Y[i].size();
        ans[Y[i][0].second]=ans[Y[i][si-1].second]=1;
        for(int j=1;j<si-1;++j)
        {
            ans[Y[i][j].second]=0;
            pa now={i,Y[i][j].second};
            int pos=lower_bound(X[Y[i][j].first].begin(),X[Y[i][j].first].end(),now)-X[Y[i][j].first].begin()-1;
            if(pos>0) Y[X[Y[i][j].first][pos].first].push_back({Y[i][j].first,X[Y[i][j].first][pos].second});
        }
    }
    for(int i=1;i<=n;++i) printf("%d",ans[i]);
    return 0;
}
/*
8
1 3
2 3
4 4
4 3
4 1
2 4
4 2
3 3
1011111101101100
1011110101101100
*/

详细

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 8ms
memory: 50628kb

input:

2
869400 218695
664808 31410

output:

2 2
1 1
11

result:

wrong answer 

Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Wrong Answer

Test #26:

score: 0
Wrong Answer
time: 51ms
memory: 53912kb

input:

92690
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 6...

output:

1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62...

result:

wrong answer 

Subtask #4:

score: 0
Wrong Answer

Test #38:

score: 0
Wrong Answer
time: 897ms
memory: 106480kb

input:

1000000
1 18543
4 40327
7 19084
8 44274
10 42366
12 22173
13 9862
15 44706
19 48070
21 13389
24 39273
26 18680
27 46858
28 46126
32 27753
34 28289
36 12220
38 39235
42 28505
45 47348
46 34220
48 47551
50 49156
54 8856
55 25515
56 21932
58 24482
59 20686
61 41381
66 30112
67 44504
70 24510
71 26418
7...

output:

1 13544
4 35328
5 14085
6 39275
8 37367
10 17174
11 4863
13 39707
16 43071
18 8390
19 34274
20 13681
21 41859
22 41127
24 22754
26 23290
28 7221
30 34236
32 23506
34 42349
35 29221
37 42552
38 44157
40 3857
41 20516
42 16933
44 19483
45 15687
46 36382
48 25113
49 39505
51 19511
52 21419
53 44781
55 ...

result:

wrong answer 

Subtask #5:

score: 0
Skipped

Dependency #2:

0%

Subtask #6:

score: 0
Skipped

Dependency #5:

0%

Subtask #7:

score: 0
Wrong Answer

Test #85:

score: 0
Wrong Answer
time: 998ms
memory: 111088kb

input:

1000000
1 602300
1 778881
2 397065
3 291452
3 678039
5 235300
6 499367
8 8597
10 327718
10 516489
12 416542
12 440048
13 284169
13 383581
13 642202
13 770858
14 378154
14 710033
15 905531
16 50155
17 142259
19 395613
19 500321
20 358934
21 461772
24 562953
24 995887
25 421244
27 900412
29 301006
31 ...

output:

1 380476
1 491464
2 250849
3 184042
3 428129
4 148661
5 315529
6 5453
7 206915
7 326298
8 263179
8 277940
9 179467
9 242324
9 405658
9 486462
10 238884
10 448166
11 571304
12 31603
13 89762
14 249930
14 316157
15 226752
16 291666
17 355572
17 628486
18 266134
19 568082
20 190076
21 95142
21 409907
2...

result:

wrong answer