about summary refs log tree commit diff
path: root/10
diff options
context:
space:
mode:
authorRaphael McSinyx <vn.mcsinyx@gmail.com>2016-10-08 09:56:43 +0700
committerRaphael McSinyx <vn.mcsinyx@gmail.com>2016-10-08 09:56:43 +0700
commit2a7bc10f6c011d19fb3b0e73068f7e1a9c30ace0 (patch)
tree95190a32ec1c7098494849eea5a5ba6b53289585 /10
parent207cc2ae9893b0cdecd20119b9ede37f73cd4a1e (diff)
downloadcp-2a7bc10f6c011d19fb3b0e73068f7e1a9c30ace0.tar.gz
Initial commit
Diffstat (limited to '10')
-rw-r--r--10/CSP-KT2/DeThiLan2.pdfbin0 -> 818820 bytes
-rw-r--r--10/CSP-KT2/dcount.c27
-rw-r--r--10/CSP-KT2/hamming.c27
-rw-r--r--10/CSP-KT2/negpairs.c24
-rw-r--r--10/CSP-KT2/sumarv.c19
-rw-r--r--10/CSP-KT2/zpairs.c28
-rwxr-xr-x10/lập-lịch/ctmt.pas86
-rwxr-xr-x10/lập-lịch/llgc2m.pas44
-rwxr-xr-x10/lập-lịch/lập-lịch.pdfbin0 -> 52261 bytes
-rwxr-xr-x10/lập-lịch/xepviec.pas53
10 files changed, 308 insertions, 0 deletions
diff --git a/10/CSP-KT2/DeThiLan2.pdf b/10/CSP-KT2/DeThiLan2.pdf
new file mode 100644
index 0000000..6940278
--- /dev/null
+++ b/10/CSP-KT2/DeThiLan2.pdf
Binary files differdiff --git a/10/CSP-KT2/dcount.c b/10/CSP-KT2/dcount.c
new file mode 100644
index 0000000..e851210
--- /dev/null
+++ b/10/CSP-KT2/dcount.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+
+/* More than 8MB is used by this program, for *efficiency*. */
+
+int main()
+{
+	long n, i, a0, m = 0, max = 0;
+	long a[100001] = {}, b[100001];
+
+	scanf("%ld", &n);
+	for (i = 0; i < n; i++) {
+		scanf("%ld", &a0);
+		if (!a[a0]) {
+			b[m] = a0;
+			m++;
+		}
+		a[a0]++;
+	}
+
+	for (i = 0; i < m; i++)
+		if (a[b[i]] > max)
+			max = a[b[i]];
+
+	printf("%ld %ld\n", m, max);
+
+	return 0;
+}
diff --git a/10/CSP-KT2/hamming.c b/10/CSP-KT2/hamming.c
new file mode 100644
index 0000000..645eb17
--- /dev/null
+++ b/10/CSP-KT2/hamming.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+
+char *hamming(long m)
+{
+	while (m % 5 == 0)
+		m /= 5;
+	while (m % 3 == 0)
+		m /= 3;
+	while (m % 2 == 0)
+		m /= 2;
+	return (m > 1) ? "NO" : "YES";
+}
+
+int main()
+{
+	short n, i;
+	long a[10000];
+
+	scanf("%hd", &n);
+	for (i = 0; i < n; i++)
+		scanf("%ld", &a[i]);
+
+	for (i = 0; i < n; i++)
+		printf("%s\n", hamming(a[i]));
+
+	return 0;
+}
diff --git a/10/CSP-KT2/negpairs.c b/10/CSP-KT2/negpairs.c
new file mode 100644
index 0000000..577fdf8
--- /dev/null
+++ b/10/CSP-KT2/negpairs.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+int main()
+{
+	long n, i;
+	long unsigned_a[201] = {};
+	long *a = &unsigned_a[100];
+	char a0;
+	long long v;
+
+	scanf("%ld", &n);
+	for (i = 0; i < n; i++) {
+		scanf("%hhd", &a0);
+		a[a0]++;
+	}
+
+	v = a[0] * (a[0] - 1) / 2;
+	for (i = 1; i <= 100; i++)
+		v += a[i] * a[-i];
+
+	printf("%lld\n", v);
+
+	return 0;
+}
diff --git a/10/CSP-KT2/sumarv.c b/10/CSP-KT2/sumarv.c
new file mode 100644
index 0000000..3e5bc7e
--- /dev/null
+++ b/10/CSP-KT2/sumarv.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+
+int main()
+{
+	short n, i;
+	long b[10001] = {};
+
+	scanf("%hd", &n);
+	for (i = 1; i <= n; i++) {
+		scanf("%ld", &b[i]);
+		b[i] *= i;
+	}
+
+	for (i = 1; i <= n; i++)
+		printf("%ld ", b[i] - b[i - 1]);
+	printf("\n");
+
+	return 0;
+}
diff --git a/10/CSP-KT2/zpairs.c b/10/CSP-KT2/zpairs.c
new file mode 100644
index 0000000..d0d6186
--- /dev/null
+++ b/10/CSP-KT2/zpairs.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+int main()
+{
+	short m, n, i, j, v = 0;
+	long a[10000], b;
+
+	scanf("%hd %hd", &n, &m);
+	for (i = 0; i < n; i++)
+		scanf("%ld", &a[i]);
+
+	i = 0;
+	for (j = 0; j < m; j++) {
+		if (i >= n)
+			break;
+		scanf("%ld", &b);
+		while (b > a[i])
+			i++;
+		if (b == a[i]) {
+			v++;
+			i++;
+		}
+	}
+
+	printf("%hd\n", v);
+
+	return 0;
+}
diff --git a/10/lập-lịch/ctmt.pas b/10/lập-lịch/ctmt.pas
new file mode 100755
index 0000000..bdd30f0
--- /dev/null
+++ b/10/lập-lịch/ctmt.pas
@@ -0,0 +1,86 @@
+const

+  inp = 'ctmt.inp';

+  out = 'ctmt.out';

+type

+  int200 = 1..200;

+  intday = 0..8640000;

+var

+  f : text;

+  n, i, j, ln2, ln3 : int200;

+  a, b : array[1..200] of intday;

+  p, q, r, s , max0, max1 : intday;

+  ln0, ln1 : 0..1;

+procedure swab(i0, j0 : int200);

+  var tmp : intday;

+  begin

+    tmp := a[i0];

+    a[i0] := a[j0];

+    a[j0] := tmp;

+    tmp := b[i0];

+    b[i0] := b[j0];

+    b[j0] := tmp

+  end;

+procedure del(m : int200);

+  var o : int200;

+  begin

+    dec(n);

+    for o := m to n do

+      begin

+        a[o] := a[o + 1];

+        b[o] := b[o + 1]

+      end

+  end;

+begin

+  assign(f, inp);

+  reset(f);

+  readln(f, n);

+  for i := 1 to n do

+    readln(f, a[i], b[i]);

+  readln(f, p, q);

+  readln(f, r, s);

+  close(f);

+  for i := 1 to n - 1 do

+    for j := i + 1 to n do

+      if a[i] > a[j] then swab(i, j);

+  i := 1;

+  while i < n do

+    begin

+      j := i + 1;

+      while j <= n do

+        begin

+          if (a[j] <= b[i]) and (b[i] <= b[j]) then

+            begin

+              b[i] := b[j];

+              del(j)

+            end

+          else inc(j)

+        end;

+      inc(i)

+    end;

+  ln0 := 0;

+  ln1 := 0;

+  max0 := 0;

+  max1 := 0;

+  for i := 1 to n do

+    begin

+      if (a[i] <= p) and (q <= b[i]) then ln0 := 1;

+      if (i < n) and (b[i] < r) and (s < a[i + 1]) then ln1 := 1;

+      if b[i] - a[i] >= max0 then

+        begin

+          ln2 := i;

+          max0 := b[i] - a[i]

+        end;

+      if (i < n) and (a[i + 1] - b[i] > max1) then

+        begin

+          ln3 := i;

+          max1 := a[i + i] - b[i]

+        end

+    end;

+  assign(f, out);

+  rewrite(f);

+  writeln(f, ln0);

+  writeln(f, ln1);

+  writeln(f, a[ln2], ' ', b[ln2]);

+  writeln(f, b[ln3] + 1, ' ', a[ln3 + 1] - 1);

+  close(f)

+end.

diff --git a/10/lập-lịch/llgc2m.pas b/10/lập-lịch/llgc2m.pas
new file mode 100755
index 0000000..3fc8ef2
--- /dev/null
+++ b/10/lập-lịch/llgc2m.pas
@@ -0,0 +1,44 @@
+uses math;
+var
+  f : text;
+  n, i : byte;
+  a, b, c, c0 : array[1..255] of byte;
+  d : array[1..255] of boolean;
+  out : cardinal;
+procedure libgc2m(m : byte; o0, o1 : cardinal);
+  var j : byte;
+  begin
+    if m > 0 then begin
+      for j := 1 to n do
+        if d[j] then begin
+          d[j] := false;
+          c[n - m + 1] := j;
+          libgc2m(m - 1, o0 + a[j], max(o0 + a[j], o1) + b[j]);
+          d[j] := true;
+        end
+    end else
+      if (o1 < out) or (out = 0) then begin
+        out := o1;
+        for j := 1 to n do c0[j] := c[j]
+      end
+  end;
+begin
+  assign(f, 'llgc2m.inp');
+  reset(f);
+  readln(f, n);
+  for i := 1 to n do read(f, a[i], b[i]);
+  close(f);
+  for i := 1 to n do d[i] := true;
+  out := 0;
+  for i := 1 to n do begin
+    d[i] := false;
+    c[1] := i;
+    libgc2m(n - 1, a[i], a[i] + b[i]);
+    d[i] := true
+  end;
+  assign(f, 'llgc2m.out');
+  rewrite(f);
+  writeln(f, out);
+  for i := 1 to n do write(f, c0[i], ' ');
+  close(f)
+end.
diff --git a/10/lập-lịch/lập-lịch.pdf b/10/lập-lịch/lập-lịch.pdf
new file mode 100755
index 0000000..48ad249
--- /dev/null
+++ b/10/lập-lịch/lập-lịch.pdf
Binary files differdiff --git a/10/lập-lịch/xepviec.pas b/10/lập-lịch/xepviec.pas
new file mode 100755
index 0000000..cfa39d6
--- /dev/null
+++ b/10/lập-lịch/xepviec.pas
@@ -0,0 +1,53 @@
+const
+  inp = 'xepviec.inp';
+  out = 'xepviec.out';
+type int200 = 0..200;
+var
+  f : text;
+  n, i, j, k, l, tmp : int200;
+  a : array[0..200, 0..200] of int200;
+function next(m : int200) : boolean;
+  var i0, j0 : int200;
+  begin
+    for i0 := 1 to a[0, 0] do
+      for j0 := 2 to a[i0, 0] do
+        if m = a[i0, j0] then exit(false);
+    next := true;
+  end;
+begin
+  assign(f, inp);
+  reset(f);
+  readln(f, n);
+  i := 0;
+  repeat
+    inc(i);
+    j := 0;
+    repeat
+      inc(j);
+      read(f, a[i, j])
+    until eoln(f);
+    a[i, 0] := j
+  until eof(f);
+  close(f);
+  a[0, 0] := i - 1;
+  for i := 1 to n do
+    for j := 1 to a[0, 0] do
+      if (a[j, 0] > 0) and next(a[j, 1]) then
+        begin
+          tmp := a[j, 1];
+          a[0, i] := tmp;
+          for k := 1 to a[0, 0] do
+            if a[k, 1] = tmp then
+              begin
+                dec(a[k, 0]);
+                for l := 1 to a[k, 0] do
+                  a[k, l] := a[k, l + 1]
+              end;
+          break
+        end;
+  assign(f, out);
+  rewrite(f);
+  for i := 1 to n do
+    write(f, a[0, i], ' ');
+  close(f)
+end.