QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#306519#7979. 棋盘hos_lyric#45 664ms11576kbD3.0kb2024-01-16 20:27:572024-07-04 03:19:18

Judging History

你现在查看的是最新测评结果

  • [2024-07-04 03:19:18]
  • 评测
  • 测评结果:45
  • 用时:664ms
  • 内存:11576kb
  • [2024-01-16 20:27:57]
  • 提交

answer

import std.conv, std.functional, std.range, std.stdio, std.string;
import std.algorithm, std.array, std.bigint, std.bitmanip, std.complex, std.container, std.math, std.mathspecial, std.numeric, std.regex, std.typecons;
import core.bitop;

class EOFException : Throwable { this() { super("EOF"); } }
string[] tokens;
string readToken() { for (; tokens.empty; ) { if (stdin.eof) { throw new EOFException; } tokens = readln.split; } auto token = tokens.front; tokens.popFront; return token; }
int readInt() { return readToken.to!int; }
long readLong() { return readToken.to!long; }

string COLOR(string s = "") { return "\x1b[" ~ s ~ "m"; }

bool chmin(T)(ref T t, in T f) { if (t > f) { t = f; return true; } else { return false; } }
bool chmax(T)(ref T t, in T f) { if (t < f) { t = f; return true; } else { return false; } }

int binarySearch(alias pred, T)(in T[] as) { int lo = -1, hi = cast(int)(as.length); for (; lo + 1 < hi; ) { const mid = (lo + hi) >> 1; (unaryFun!pred(as[mid]) ? hi : lo) = mid; } return hi; }
int lowerBound(T)(in T[] as, T val) { return as.binarySearch!(a => (a >= val)); }
int upperBound(T)(in T[] as, T val) { return as.binarySearch!(a => (a > val)); }




void main() {
  try {
    for (; ; ) {
      const L = readInt;
      const Q = readInt;
      const X = readInt;
      const Y = readInt;
      auto K = new BigInt[Q];
      foreach (q; 0 .. Q) {
        K[q] = BigInt(readToken);
      }
      
      const maxK = K.maxElement;
      int E;
      {
        E = 0;
        for (BigInt thr = 1; !(maxK < thr); thr *= 3) ++E;
      }
      const three = (5*E <= X);
      if (!three) {
        E = 0;
        for (BigInt two = 1; !(maxK < two); two *= 2) ++E;
      }
      
      alias Pt = Tuple!(int, "x", int, "y");
      Pt[] ps;
      auto ids = new int[3][E];
      if (three) {
        foreach (e; 0 .. E) {
          ps ~= Pt(e + 0, 2*e + 0);
          ps ~= Pt(e + 0, 2*e + 1);
          ps ~= Pt(e + 0, 2*e + 2);
          ids[e][1] = cast(int)(ps.length); ps ~= Pt(e + 1, 2*e + 0);
          ids[e][2] = cast(int)(ps.length); ps ~= Pt(e + 1, 2*e + 1);
        }
      } else {
        foreach (e; 0 .. E) {
          ps ~= Pt(e + 0, e + 0);
          ps ~= Pt(e + 0, e + 1);
          ids[e][1] = cast(int)(ps.length); ps ~= Pt(e + 1, e + 0);
        }
      }
      
      writeln(ps.length);
      foreach (p; ps) {
        writeln(p.x + 1, " ", p.y + 1);
      }
      foreach (q; 0 .. Q) {
        auto ans = new char[ps.length];
        ans[] = '0';
        BigInt k = K[q];
        if (three) {
          foreach (e; 0 .. E) {
            const r = k % 3;
            k /= 3;
            if (r) {
              ans[ids[e][r]] = '1';
            }
          }
        } else {
          foreach (e; 0 .. E) {
            const r = k % 2;
            k /= 2;
            if (r) {
              ans[ids[e][r]] = '1';
            }
          }
        }
        writeln(ans);
      }
    }
  } catch (EOFException e) {
  }
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 5
Accepted

Test #1:

score: 5
Accepted
time: 3ms
memory: 3516kb

input:

3 999 1000 340
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
...

output:

35
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 5
3 3
3 4
3 5
3 6
3 7
4 5
4 6
4 7
4 8
4 9
5 7
5 8
5 9
5 10
5 11
6 9
6 10
6 11
6 12
6 13
7 11
7 12
7 13
7 14
7 15
8 13
8 14
00010000000000000000000000000000000
00001000000000000000000000000000000
00000000100000000000000000000000000
00010000100000000000000000000000000
...

result:

ok correct

Subtask #2:

score: 10
Accepted

Test #2:

score: 10
Accepted
time: 75ms
memory: 4196kb

input:

12 10000 1000 340
358908473750
36343501002
904324605639
453955046266
725478753662
218319365131
882878650993
648345848966
474401697383
722377018680
718743783955
748051292505
167886140898
411111004914
327825244967
990026144963
623309580364
970889332700
319445927842
527624602835
453135227321
1153226125...

output:

130
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 5
3 3
3 4
3 5
3 6
3 7
4 5
4 6
4 7
4 8
4 9
5 7
5 8
5 9
5 10
5 11
6 9
6 10
6 11
6 12
6 13
7 11
7 12
7 13
7 14
7 15
8 13
8 14
8 15
8 16
8 17
9 15
9 16
9 17
9 18
9 19
10 17
10 18
10 19
10 20
10 21
11 19
11 20
11 21
11 22
11 23
12 21
12 22
12 23
12 24
12 25
13 23
13 24
1...

result:

ok correct

Test #3:

score: 0
Accepted
time: 72ms
memory: 4132kb

input:

12 10000 1000 340
930556110177
377904923573
36236934395
488122716493
51121341209
392176146788
323693311937
449196823461
336471392319
92713238333
281418059653
761936598942
293730650349
106748001462
609643804851
703543108800
999258707162
376689099489
435462123411
710775118008
45582546742
835557591196
...

output:

130
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 5
3 3
3 4
3 5
3 6
3 7
4 5
4 6
4 7
4 8
4 9
5 7
5 8
5 9
5 10
5 11
6 9
6 10
6 11
6 12
6 13
7 11
7 12
7 13
7 14
7 15
8 13
8 14
8 15
8 16
8 17
9 15
9 16
9 17
9 18
9 19
10 17
10 18
10 19
10 20
10 21
11 19
11 20
11 21
11 22
11 23
12 21
12 22
12 23
12 24
12 25
13 23
13 24
1...

result:

ok correct

Test #4:

score: 0
Accepted
time: 75ms
memory: 4092kb

input:

12 10000 1000 340
737930395319
182266797635
731674395027
268811900200
40636281734
385606961047
579973266668
244481758021
889308913416
116731076438
760018797175
690646649762
295657481984
860132997501
798927396859
973501342055
371555705903
89078273643
755892420101
664745115837
527923357928
12789900388...

output:

130
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 5
3 3
3 4
3 5
3 6
3 7
4 5
4 6
4 7
4 8
4 9
5 7
5 8
5 9
5 10
5 11
6 9
6 10
6 11
6 12
6 13
7 11
7 12
7 13
7 14
7 15
8 13
8 14
8 15
8 16
8 17
9 15
9 16
9 17
9 18
9 19
10 17
10 18
10 19
10 20
10 21
11 19
11 20
11 21
11 22
11 23
12 21
12 22
12 23
12 24
12 25
13 23
13 24
1...

result:

ok correct

Subtask #3:

score: 10
Accepted

Test #5:

score: 10
Accepted
time: 416ms
memory: 11528kb

input:

100 10000 1000 340
87490023455826213450979333037504606824522062808297739018786336978222089712660133428564103979384831
874900289913204769749000879539227331559680630241808944569515663934025397982898503777823815274323967
8749002899116133353924895735921513229471979456689635148877567298640178774668643967...

output:

999
1 1
1 2
2 1
2 2
2 3
3 2
3 3
3 4
4 3
4 4
4 5
5 4
5 5
5 6
6 5
6 6
6 7
7 6
7 7
7 8
8 7
8 8
8 9
9 8
9 9
9 10
10 9
10 10
10 11
11 10
11 11
11 12
12 11
12 12
12 13
13 12
13 13
13 14
14 13
14 14
14 15
15 14
15 15
15 16
16 15
16 16
16 17
17 16
17 17
17 18
18 17
18 18
18 19
19 18
19 19
19 20
20 19
20 20
...

result:

ok correct

Test #6:

score: 0
Accepted
time: 415ms
memory: 11576kb

input:

100 10000 1000 340
8748936149282545611299720421204578485624739530690115026507467181657344327662766924981916612956258303
8714827106557313136171687656546075434718184787427526246530142735325290665843132579235229445895749631
8749002377650837755861570823748389228611868494396845969260163830921683752297192...

output:

999
1 1
1 2
2 1
2 2
2 3
3 2
3 3
3 4
4 3
4 4
4 5
5 4
5 5
5 6
6 5
6 6
6 7
7 6
7 7
7 8
8 7
8 8
8 9
9 8
9 9
9 10
10 9
10 10
10 11
11 10
11 11
11 12
12 11
12 12
12 13
13 12
13 13
13 14
14 13
14 14
14 15
15 14
15 15
15 16
16 15
16 16
16 17
17 16
17 17
17 18
18 17
18 18
18 19
19 18
19 19
19 20
20 19
20 20
...

result:

ok correct

Subtask #4:

score: 0
Wrong Answer

Test #7:

score: 0
Wrong Answer
time: 401ms
memory: 11332kb

input:

100 10000 990 310
4083451712318559926139496762164571032902328806667934236880329773320213539959944736095945843081512968
7811890641057562314768022152641517082686481268288006737090208624016586608183953908313798353213188661
97358161226180890688421784730819518002666166790210320310558753031161862165361257...

output:

999
1 1
1 2
2 1
2 2
2 3
3 2
3 3
3 4
4 3
4 4
4 5
5 4
5 5
5 6
6 5
6 6
6 7
7 6
7 7
7 8
8 7
8 8
8 9
9 8
9 9
9 10
10 9
10 10
10 11
11 10
11 11
11 12
12 11
12 12
12 13
13 12
13 13
13 14
14 13
14 14
14 15
15 14
15 15
15 16
16 15
16 16
16 17
17 16
17 17
17 18
18 17
18 18
18 19
19 18
19 19
19 20
20 19
20 20
...

result:

wrong answer Integer 999 violates the range [1, 990]

Subtask #5:

score: 10
Accepted

Test #9:

score: 10
Accepted
time: 649ms
memory: 11380kb

input:

100 10000 1050 260
8749002899132047697490008908470485461412677723566863434996575047286849703722697797645542008396185599
8749002899132047697490008908470485461412677699052921091826559946707718798046219210886366418022957055
7655377536740541735303757766642121742076255665128332760334129720709510994307378...

output:

1050
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 5
3 3
3 4
3 5
3 6
3 7
4 5
4 6
4 7
4 8
4 9
5 7
5 8
5 9
5 10
5 11
6 9
6 10
6 11
6 12
6 13
7 11
7 12
7 13
7 14
7 15
8 13
8 14
8 15
8 16
8 17
9 15
9 16
9 17
9 18
9 19
10 17
10 18
10 19
10 20
10 21
11 19
11 20
11 21
11 22
11 23
12 21
12 22
12 23
12 24
12 25
13 23
13 24
...

result:

ok correct

Test #10:

score: 0
Accepted
time: 664ms
memory: 11464kb

input:

100 10000 1050 260
8749002899132047697490008908470485461412677723572849745703082425639811996797503692892926808185372671
874900289913204769701566661490981966686019183484759731181812123183820701469425350909196577361887231
87490028991280691115987306153332424033768113943575511927837611721527450026923859...

output:

1050
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 5
3 3
3 4
3 5
3 6
3 7
4 5
4 6
4 7
4 8
4 9
5 7
5 8
5 9
5 10
5 11
6 9
6 10
6 11
6 12
6 13
7 11
7 12
7 13
7 14
7 15
8 13
8 14
8 15
8 16
8 17
9 15
9 16
9 17
9 18
9 19
10 17
10 18
10 19
10 20
10 21
11 19
11 20
11 21
11 22
11 23
12 21
12 22
12 23
12 24
12 25
13 23
13 24
...

result:

ok correct

Subtask #6:

score: 10
Accepted

Test #11:

score: 10
Accepted
time: 646ms
memory: 11336kb

input:

100 10000 1050 240
8749002899132047697490008908470485461412677723572849734285100881333676956761384191490477496469520383
874886939179415873527191365288672777702448917037688119492655525651250910013304087281579324577152991
87490028991320476974900089084704854614126777235728490149522637601883528949454159...

output:

1050
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 5
3 3
3 4
3 5
3 6
3 7
4 5
4 6
4 7
4 8
4 9
5 7
5 8
5 9
5 10
5 11
6 9
6 10
6 11
6 12
6 13
7 11
7 12
7 13
7 14
7 15
8 13
8 14
8 15
8 16
8 17
9 15
9 16
9 17
9 18
9 19
10 17
10 18
10 19
10 20
10 21
11 19
11 20
11 21
11 22
11 23
12 21
12 22
12 23
12 24
12 25
13 23
13 24
...

result:

ok correct

Test #12:

score: 0
Accepted
time: 642ms
memory: 11320kb

input:

100 10000 1050 240
8748869399942302640609859219613849864404711585518072959767189754493152526763381301362784876544131071
8749002898113529709322765865336262617207988643047115548870114300321741770881768540817196765514039295
8749002899132047697490008908470485448242213512826165447361161116479336307579296...

output:

1050
1 1
1 2
1 3
2 1
2 2
2 3
2 4
2 5
3 3
3 4
3 5
3 6
3 7
4 5
4 6
4 7
4 8
4 9
5 7
5 8
5 9
5 10
5 11
6 9
6 10
6 11
6 12
6 13
7 11
7 12
7 13
7 14
7 15
8 13
8 14
8 15
8 16
8 17
9 15
9 16
9 17
9 18
9 19
10 17
10 18
10 19
10 20
10 21
11 19
11 20
11 21
11 22
11 23
12 21
12 22
12 23
12 24
12 25
13 23
13 24
...

result:

ok correct

Subtask #7:

score: 0
Wrong Answer

Test #13:

score: 0
Wrong Answer
time: 1ms
memory: 3064kb

input:

100 1 980 260
8749002899132047697490008908470485461309833682610292204604841418296589481615503153703163411103219711

output:

996
1 1
1 2
2 1
2 2
2 3
3 2
3 3
3 4
4 3
4 4
4 5
5 4
5 5
5 6
6 5
6 6
6 7
7 6
7 7
7 8
8 7
8 8
8 9
9 8
9 9
9 10
10 9
10 10
10 11
11 10
11 11
11 12
12 11
12 12
12 13
13 12
13 13
13 14
14 13
14 14
14 15
15 14
15 15
15 16
16 15
16 16
16 17
17 16
17 17
17 18
18 17
18 18
18 19
19 18
19 19
19 20
20 19
20 20
...

result:

wrong answer Integer 996 violates the range [1, 980]

Subtask #8:

score: 0
Wrong Answer

Test #19:

score: 0
Wrong Answer
time: 422ms
memory: 11368kb

input:

100 10000 960 240
8749002899132047697015724510954438324957730968977252383122989921226002617013223698533483281626692607
8749002899132047697490008908470485461412677720507858663971304708923117942496885325656574463725010943
87148271065573131361716885470369961093519598137825155235803895087505468828694702...

output:

999
1 1
1 2
2 1
2 2
2 3
3 2
3 3
3 4
4 3
4 4
4 5
5 4
5 5
5 6
6 5
6 6
6 7
7 6
7 7
7 8
8 7
8 8
8 9
9 8
9 9
9 10
10 9
10 10
10 11
11 10
11 11
11 12
12 11
12 12
12 13
13 12
13 13
13 14
14 13
14 14
14 15
15 14
15 15
15 16
16 15
16 16
16 17
17 16
17 17
17 18
18 17
18 18
18 19
19 18
19 19
19 20
20 19
20 20
...

result:

wrong answer Integer 999 violates the range [1, 960]