提出 #372168


ソースコード 拡げる

#include <bits/stdc++.h>

#define REP(i,n) for(int i=0;i<(int)(n);i++)
#define ALL(x) (x).begin(),(x).end()

using namespace std;

typedef long double ld;
typedef complex<ld> P;
typedef vector<P> VP;
const ld eps = 1e-6, pi = acos(-1.0);

ld dot (P a, P b) { return real(conj(a) * b); }
ld cross (P a, P b) { return imag(conj(a) * b); }

namespace std {
  bool operator<(const P &lhs, const P &rhs) {
    return lhs.real() == rhs.real() ? lhs.imag() < rhs.imag()
                                                   : lhs.real() < rhs.real();
  }
}

struct L{ P a, b; };
struct C { P p; ld r; };

int ccw (P a, P b, P c) {
  b -= a; c -= a;
  if (cross(b, c) > eps) return 1;   // counter clockwise
  if (cross(b, c) < -eps) return -1; // clockwise
  if (dot(b, c) < 0) return 2;       // c--a--b on line
  if (norm(b) < norm(c)) return -2;  // a--b--c on line
  return 0;                          // a--c--b on line
}

P is_ll(L s, L t){
  P sv = s.b - s.a, tv = t.b - t.a;
  return s.a + sv * cross(tv, t.a - s.a) / cross(tv, sv);
}

VP ConvexCut(const VP &ps, L l) {
  VP Q;
  for (int i = 0; i < (int)ps.size(); i++) {
    P A = ps[i], B = ps[(i+1)%ps.size()];
    if (ccw(l.a, l.b, A) != -1) Q.push_back(A);
    if (ccw(l.a, l.b, A) * ccw(l.a, l.b, B) < 0)
      Q.push_back(is_ll((L){A, B}, l));
  }
  return Q;
}

void query(VP &polygon, ld angle) {
  cout << "? " << angle << endl;
  ld y; cin >> y;
  ld rad = -angle/180.0*pi;
  P rot = P(cos(rad), sin(rad));
  L l = (L){P(3000, y) * rot, P(-3000, y) * rot};
  polygon = ConvexCut(polygon, l);
}

int main() {
  cout << setprecision(12) << fixed;
  VP polygon;
  polygon.push_back(P( 2000,  2000));
  polygon.push_back(P(-2000,  2000));
  polygon.push_back(P(-2000, -2000));
  polygon.push_back(P( 2000, -2000));
  for (ld angle = 0.85; angle < 400; angle += 8)
    query(polygon, angle);
  VP poly = polygon;
  int n = poly.size();
  REP(i,n) REP(j,n) {
    if (i == j) continue;
    P vec = poly[i] - poly[j];
    query(polygon, -arg(vec) / pi * 180.0);
  }
  int id = -1;
  REP(i,polygon.size()) {
    if (abs(polygon[i] - P(0, 0)) < eps) id = i;
  }
  assert(id >= 0);
  int m = polygon.size();
  assert(m <= 10);
  REP(i,m) {
    P p = polygon[(i+id)%m];
    if (abs(polygon[(i+id+1)%m] - p) < eps) continue;
    if (p.real() < 0) p += P(-eps, 0);
    else p += P(eps, 0);
    if (p.imag() < 0) p += P(0, -eps);
    else p += P(0, eps);
    cout << "! " << (int)(p.real()) << " " << (int)(p.imag()) << endl;
  }
  return 0;
}

提出情報

提出日時
問題 H - 回すだけ
ユーザ snakeCase
言語 C++11 (GCC 4.9.2)
得点 0
コード長 2582 Byte
結果 WA
実行時間 2037 ms
メモリ 1276 KiB

ジャッジ結果

セット名 All
得点 / 配点 0 / 300
結果
WA × 21
TLE × 9
セット名 テストケース
All scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt, scrambled_28.txt, scrambled_29.txt
ケース名 結果 実行時間 メモリ
scrambled_00.txt WA 38 ms 1272 KiB
scrambled_01.txt WA 36 ms 1128 KiB
scrambled_02.txt WA 37 ms 1260 KiB
scrambled_03.txt WA 38 ms 1204 KiB
scrambled_04.txt WA 55 ms 1220 KiB
scrambled_05.txt WA 55 ms 1196 KiB
scrambled_06.txt WA 38 ms 1200 KiB
scrambled_07.txt WA 39 ms 1144 KiB
scrambled_08.txt WA 59 ms 1148 KiB
scrambled_09.txt TLE 2033 ms 1176 KiB
scrambled_10.txt TLE 2035 ms 1156 KiB
scrambled_11.txt WA 38 ms 1188 KiB
scrambled_12.txt WA 50 ms 1180 KiB
scrambled_13.txt TLE 2033 ms 1184 KiB
scrambled_14.txt WA 36 ms 1196 KiB
scrambled_15.txt WA 45 ms 1208 KiB
scrambled_16.txt TLE 2033 ms 1124 KiB
scrambled_17.txt WA 37 ms 1132 KiB
scrambled_18.txt WA 39 ms 1180 KiB
scrambled_19.txt WA 37 ms 1140 KiB
scrambled_20.txt WA 50 ms 1240 KiB
scrambled_21.txt WA 36 ms 1180 KiB
scrambled_22.txt TLE 2033 ms 1164 KiB
scrambled_23.txt WA 41 ms 1144 KiB
scrambled_24.txt TLE 2037 ms 1080 KiB
scrambled_25.txt TLE 2034 ms 1276 KiB
scrambled_26.txt WA 43 ms 1196 KiB
scrambled_27.txt WA 37 ms 1272 KiB
scrambled_28.txt TLE 2033 ms 1264 KiB
scrambled_29.txt TLE 2033 ms 1264 KiB