i64 write(i32, ptr i8, u64) { `scsbsa` syscall3(i64(1), `la` as i64, `lb` as i64, `lc` as i64) } i64 read(i32, ptr i8, u64) { `scsbsa` syscall3(i64(0), `la` as i64, `lb` as i64, `lc` as i64) } i32 open(ptr i8, i32, i32) { `scsbsa` syscall3(i64(2), `la` as i64, `lb` as i64, `lc` as i64) as i32 } void exit(i32) { as i64 i64(231) rev syscall1 trash } void putc(i8) { array i8[1] `dstr` store write(1, `lt`, u64(1)) trash } u64 strlen(ptr i8) { dup while(dup load i8(0) !=) { 1+ } `r-` } void print(ptr i8) { 1 rev dup strlen write trash } void println(ptr i8) { print i8(10) putc } void printnum(i32) { if (dup 0 ==) { putc('0') } else if (dup 0 <) { `0r-` '-' putc } array i8[11] 10+ dup i8(0) store -1+ `sb` while (dup 0 !=) { 10 divmod 48+ as i8 `lb` rev store `lb` -1+ `sb` } trash print(`lb`1+) } void printnum64(u64) { if (dup u64(0) ==) { putc('0') } array i8[22] 22+ dup i8(0) store -1+ `sb` while (dup u64(0) !=) { u64(10) divmod u64(48)+ as i8 `lb` rev store `lb` -1+ `sb` } trash print(`lb`1+) } i32 atoi(ptr i8) { set string 0 while (get string load '0' >= get string load '9' <= &) { 10* get string load '0'- as i32 + get string 1+ set string } } u64 atol(ptr i8) { set string u64(0) while (get string load '0' >= get string load '9' <= &) { u64(10)* get string load '0'- as u64 + get string 1+ set string } } i32 abs(i32) { if (dup 0 <) {`0r-`} } void _start() { open("input.q", 0, 0) set file array i8[65535] set buffer get buffer i8(48) store read(get file, get buffer, u64(65535)) as i32 set size #get buffer get size+ i8(10) store `0so` `100000` set trx `100000` set try `100000` set brx `0` set bry `0` set blx `0` set bly `0` set tlx `100000` set tly `0si` while (`li1+` get size < ) { atoi(buffer[`li`]) `sx` while (buffer[`li`] load ',' !=) {inc(i)} inc(i) atoi(buffer[`li`]) `sy` while (buffer[`li`] load i8(10) !=) {inc(i)} inc(i) `lxlyr` printnum ',' putc printnum i8(10) putc # if less than topright, then if (`lxly+` get trx get try + <=) { `lxly` set try set trx } # if y - x > br if (`lylx-` get bry get brx - >=) { `lxly` set bry set brx } # if more than bottom left if (`lxly+` get blx get bly+ >=) { `lxly` set bly set blx } # if x - y > tl if (`lxly-` get tlx get tly - >=) { `lxly` set tly set tlx } } print("tr: ") printnum(get trx) putc(',') printnum(get try) putc(i8(10)) print("br: ") printnum(get brx) putc(',') printnum(get bry) putc(i8(10)) print("bl: ") printnum(get blx) putc(',') printnum(get bly) putc(i8(10)) print("tl: ") printnum(get tlx) putc(',') printnum(get tly) putc(i8(10)) get blx get trx - `1+` as u64 get bly get try - `1+` as u64 * `s1` get tlx get brx - `1+` as u64 get bry get tly - `1+` as u64 * `s2` if (`l1l2`>) { `l1` } else { `l2` } println("answer:") printnum64 exit(0) } void main() { _start }