結果
問題 | No.282 おもりと天秤(2) |
ユーザー | tnakao0123 |
提出日時 | 2016-04-13 15:35:57 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 1,624 ms / 5,000 ms |
コード長 | 2,107 bytes |
コンパイル時間 | 859 ms |
コンパイル使用メモリ | 96,004 KB |
実行使用メモリ | 25,220 KB |
平均クエリ数 | 284.00 |
最終ジャッジ日時 | 2024-07-16 23:38:25 |
合計ジャッジ時間 | 16,671 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 22 ms
25,220 KB |
testcase_01 | AC | 24 ms
24,964 KB |
testcase_02 | AC | 21 ms
25,220 KB |
testcase_03 | AC | 22 ms
25,220 KB |
testcase_04 | AC | 21 ms
25,220 KB |
testcase_05 | AC | 24 ms
24,580 KB |
testcase_06 | AC | 29 ms
24,964 KB |
testcase_07 | AC | 22 ms
24,836 KB |
testcase_08 | AC | 27 ms
24,836 KB |
testcase_09 | AC | 27 ms
24,824 KB |
testcase_10 | AC | 401 ms
25,220 KB |
testcase_11 | AC | 1,432 ms
24,836 KB |
testcase_12 | AC | 505 ms
24,964 KB |
testcase_13 | AC | 723 ms
25,220 KB |
testcase_14 | AC | 1,225 ms
24,964 KB |
testcase_15 | AC | 1,536 ms
25,220 KB |
testcase_16 | AC | 128 ms
24,836 KB |
testcase_17 | AC | 673 ms
25,220 KB |
testcase_18 | AC | 1,094 ms
24,836 KB |
testcase_19 | AC | 1,123 ms
24,836 KB |
testcase_20 | AC | 1,583 ms
25,100 KB |
testcase_21 | AC | 1,606 ms
25,196 KB |
testcase_22 | AC | 1,624 ms
24,556 KB |
testcase_23 | AC | 21 ms
24,844 KB |
ソースコード
/* -*- coding: utf-8 -*- * * 282.cc: No.282 おもりと天秤(2) - yukicoder */ #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<iostream> #include<string> #include<vector> #include<map> #include<set> #include<stack> #include<list> #include<queue> #include<deque> #include<algorithm> #include<numeric> #include<utility> #include<complex> #include<functional> using namespace std; /* constant */ const int MAX_N = 500; /* typedef */ typedef pair<int,int> pii; typedef vector<pii> vpii; typedef queue<pii> qpii; /* global variables */ int cmat[MAX_N][MAX_N], as[MAX_N]; bool used[MAX_N]; /* subroutines */ bool cmpcmat(const int &a, const int &b) { return cmat[a][b] < 0; } /* main */ int main() { int n; cin >> n; qpii aps; for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) aps.push(pii(i, j)); int n2 = n * 2; while (! aps.empty()) { //printf("aps=%lu\n", aps.size()); putchar('?'); int k = 0; vpii qs; memset(used, false, sizeof(used)); while (k < n) { bool found = false; pii u; for (int i = 0; i < aps.size(); i++) { u = aps.front(); aps.pop(); if (! used[u.first] && ! used[u.second]) { found = true; break; } aps.push(u); } if (! found) { while (k < n) printf(" 0"), k++; } else { used[u.first] = used[u.second] = true; printf(" %d %d", u.first + 1, u.second + 1); qs.push_back(u); k += 2; } } for (int i = 0; i < n; i++) printf(" 0"); putchar('\n'); cout.flush(); for (int i = 0; i < n; i++) { char ch; cin >> ch; if (i < qs.size()) { int &li = qs[i].first, &ri = qs[i].second; int ci = (ch == '<') ? -1 : (ch == '>') ? 1 : 0; cmat[li][ri] = ci; cmat[ri][li] = -ci; } } } //for (int i = 0; i < n; i++) { //for (int j = 0; j < n; j++) printf(" %d", cmat[i][j]); //putchar('\n'); //} for (int i = 0; i < n; i++) as[i] = i; sort(as, as + n, cmpcmat); putchar('!'); for (int i = 0; i < n; i++) printf(" %d", as[i] + 1); putchar('\n'); cout.flush(); return 0; }