Submission #3336727
Source Code Expand
import collection.mutable import scala.collection.mutable.ListBuffer object Main { def main(args: Array[String]): Unit = { import scala.io.StdIn.readLine val Array(n, m) = readLine().split(" ").map(_.toInt) val cnf = CNF(readLine()) val assignment = Assignment(readLine().map(_ == 'T')) val varToClauseIndexes = { val builder = mutable.Map[Var, mutable.ListBuffer[Int]]() builder ++= (0 until n).map(i => i -> ListBuffer[Int]()) for { (c, i) <- cnf.zipWithIndex v <- c.vars } { builder(v) += i } builder.toMap.mapValues(seq => mutable.BitSet() ++= seq) } val falseCaluseIndexes = mutable.BitSet() ++= cnf.zipWithIndex.flatMap{ case (c, i) if !c.test(assignment) => Some(i) case _ => None } def count(vars: Set[Var], falseSet: mutable.BitSet): Int = { if (vars.size > 10) return Int.MaxValue if (falseSet.isEmpty) return vars.size cnf(falseSet.head).vars.filterNot(vars.contains).map(v => { count(vars + v, falseSet ^ varToClauseIndexes(v)) }) match { case list if list.isEmpty => Int.MaxValue case list => list.min } } val result = count(Set(), falseCaluseIndexes) if (result == Int.MaxValue) println("TOO LARGE") else println(result) } type CNF = IndexedSeq[Clause] type Var = Int case class Clause(left: Literal, right: Literal) { def test(assignment: Assignment): Boolean = { left.test(assignment) || right.test(assignment) } def vars = Seq(left.i, right.i) } case class Literal(i: Var, tilde: Boolean) { def test(assignment: Assignment): Boolean = { if (tilde) !assignment.list(i) else assignment.list(i) } } object CNF { def apply(str: String): CNF = { str.split("\\^").map(s => Clause(s)) } } object Clause { def apply(str: String): Clause = { val Array(left, right) = str.slice(1, str.length - 1).split("v") Clause(Literal(left), Literal(right)) } } object Literal { def apply(str: String): Literal = { str.split("~") match { case Array(x) => new Literal(x.toInt - 1, false) case Array("", x) => new Literal(x.toInt - 1, true) } } } case class Assignment(list: IndexedSeq[Boolean]) { def *(set: Set[Int]): Assignment = { val arr = list.toArray set.foreach(i => arr(i) = !arr(i)) Assignment(arr.toIndexedSeq) } } }
Submission Info
Submission Time | |
---|---|
Task | E - 2-SAT |
User | tsuba3 |
Language | Scala (2.11.7) |
Score | 0 |
Code Size | 2561 Byte |
Status | WA |
Exec Time | 2111 ms |
Memory | 154744 KB |
Judge Result
Set Name | All | ||||||
---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 200 | ||||||
Status |
|
Set Name | Test Cases |
---|---|
All | 00-sample-00, 00-sample-10, 00-sample-20, 10-sat-00, 10-sat-01, 10-sat-02, 10-sat-03, 10-sat-04, 10-sat-05, 10-sat-06, 10-sat-07, 10-sat-08, 10-sat-09, 10-sat-10, 10-sat-11, 10-sat-12, 10-sat-13, 10-sat-14, 10-sat-15, 10-sat-16, 10-sat-17, 10-sat-18, 10-sat-19, 10-sat-20, 10-sat-21, 10-sat-22, 10-sat-23, 10-sat-24, 10-sat-25, 10-sat-26, 10-sat-27, 10-sat-28, 10-sat-29, 10-sat-30, 10-sat-31, 10-sat-32, 10-sat-33, 10-sat-34, 10-sat-35, 10-sat-36, 10-sat-37, 10-sat-38, 10-sat-39, 20-unsat-00, 20-unsat-01, 20-unsat-02, 20-unsat-03, 20-unsat-04, 20-unsat-05, 20-unsat-06, 20-unsat-07, 20-unsat-08, 20-unsat-09 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00-sample-00 | AC | 330 ms | 25284 KB |
00-sample-10 | AC | 333 ms | 25268 KB |
00-sample-20 | AC | 542 ms | 27588 KB |
10-sat-00 | AC | 1189 ms | 45620 KB |
10-sat-01 | AC | 1062 ms | 44900 KB |
10-sat-02 | AC | 1488 ms | 79492 KB |
10-sat-03 | AC | 1244 ms | 47408 KB |
10-sat-04 | WA | 1812 ms | 145144 KB |
10-sat-05 | WA | 1354 ms | 61800 KB |
10-sat-06 | WA | 1703 ms | 128676 KB |
10-sat-07 | WA | 1536 ms | 86544 KB |
10-sat-08 | WA | 1696 ms | 127796 KB |
10-sat-09 | WA | 1433 ms | 57888 KB |
10-sat-10 | WA | 1676 ms | 126924 KB |
10-sat-11 | WA | 1536 ms | 89416 KB |
10-sat-12 | WA | 1958 ms | 148828 KB |
10-sat-13 | WA | 1792 ms | 140372 KB |
10-sat-14 | WA | 1925 ms | 154744 KB |
10-sat-15 | WA | 1346 ms | 59240 KB |
10-sat-16 | TLE | 2002 ms | 144184 KB |
10-sat-17 | WA | 1177 ms | 55072 KB |
10-sat-18 | TLE | 2060 ms | 146648 KB |
10-sat-19 | WA | 1586 ms | 130540 KB |
10-sat-20 | TLE | 2103 ms | 146472 KB |
10-sat-21 | WA | 1422 ms | 59084 KB |
10-sat-22 | AC | 1911 ms | 144808 KB |
10-sat-23 | AC | 1451 ms | 76444 KB |
10-sat-24 | TLE | 2037 ms | 146480 KB |
10-sat-25 | AC | 1784 ms | 141704 KB |
10-sat-26 | TLE | 2111 ms | 146544 KB |
10-sat-27 | AC | 1483 ms | 93028 KB |
10-sat-28 | TLE | 2105 ms | 147028 KB |
10-sat-29 | AC | 1368 ms | 75448 KB |
10-sat-30 | TLE | 2079 ms | 147368 KB |
10-sat-31 | AC | 1351 ms | 79048 KB |
10-sat-32 | TLE | 2083 ms | 145448 KB |
10-sat-33 | AC | 1519 ms | 82044 KB |
10-sat-34 | TLE | 2025 ms | 147448 KB |
10-sat-35 | AC | 1411 ms | 55208 KB |
10-sat-36 | AC | 1985 ms | 147116 KB |
10-sat-37 | AC | 1240 ms | 46568 KB |
10-sat-38 | TLE | 2101 ms | 148724 KB |
10-sat-39 | AC | 1316 ms | 63956 KB |
20-unsat-00 | AC | 1984 ms | 143556 KB |
20-unsat-01 | AC | 1629 ms | 131008 KB |
20-unsat-02 | TLE | 2059 ms | 149724 KB |
20-unsat-03 | AC | 1328 ms | 50740 KB |
20-unsat-04 | AC | 1998 ms | 146088 KB |
20-unsat-05 | AC | 1392 ms | 56748 KB |
20-unsat-06 | TLE | 2042 ms | 145980 KB |
20-unsat-07 | AC | 1813 ms | 143636 KB |
20-unsat-08 | AC | 1950 ms | 143904 KB |
20-unsat-09 | AC | 1630 ms | 113456 KB |