結果
| 問題 |
No.471 直列回転機
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-03-30 18:34:32 |
| 言語 | Python2 (2.7.18) |
| 結果 |
AC
|
| 実行時間 | 1,310 ms / 3,141 ms |
| コード長 | 1,539 bytes |
| コンパイル時間 | 237 ms |
| コンパイル使用メモリ | 7,040 KB |
| 実行使用メモリ | 28,896 KB |
| 平均クエリ数 | 19589.39 |
| 最終ジャッジ日時 | 2024-06-11 10:39:49 |
| 合計ジャッジ時間 | 35,174 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 58 |
ソースコード
#!/usr/bin/python2
# -*- coding: utf-8 -*-
# †
import sys
from itertools import chain, repeat
def Struct(name, fields):
fields = fields.replace(',', ' ').split()
def __init__(self, *args):
n, m = len(args), len(fields)
if n > m:
raise TypeError('__init__() takes at most {} arguments ({} given)'.format(m, n))
args = chain(args, repeat(None))
for field, value in zip(fields, args):
setattr(self, field, value)
def __str__(self):
return '{}({})'.format(name, ', '.join('{}={}'.format(f, getattr(self, f)) for f in fields))
def __getitem__(self, index):
return getattr(self, fields[index])
def __setitem__(self, index, value):
setattr(self, fields[index], value)
attrs = {
'__slots__': fields,
'__init__': __init__,
'__getitem__': __getitem__,
'__setitem__': __setitem__,
'__str__': __str__,
'__repr__': __str__,
}
return type(name, (object,), attrs)
P = Struct('P', 'x, y')
def nya(mes):
print mes
sys.stdout.flush()
M = int(raw_input())
points = [P(*map(int, raw_input().split())) for _ in xrange(M)]
nya('? 0 0')
p00 = P(*map(int, raw_input().split()))
nya('? 1 0')
p10 = P(*map(int, raw_input().split()))
p10.x -= p00.x
p10.y -= p00.y
nya('? 0 1')
p01 = P(*map(int, raw_input().split()))
p01.x -= p00.x
p01.y -= p00.y
nya('!')
for p in points:
x = p10.x * p.x + p01.x * p.y + p00.x
y = p10.y * p.x + p01.y * p.y + p00.y
nya('{} {}'.format(x, y))