Problem:
E - じゃんけん
問題文
E 君はじゃんけんが大好きである (ちなみにじゃんけんのルールについては
Wikipediaのじゃんけんのページ
を参照せよ)．
ある日，町内でじゃんけん大会があるということを知った E 君は，じゃんけんの腕に自信があったこともあり早速出場することにした．
ところが大会当日，E 君を待ち受けていたのは，普通の「グー・チョキ・パー」のみからなる普通のじゃんけんではなく，
より多くの手からなる
一般化されたじゃんけん
であった．
一般化されたじゃんけん
は 2 人のプレイヤーで行われるゲームである．
まず，2 人にはこのじゃんけんにおいて使用出来る手の個数
N
と，
N
個の手の勝敗関係を示す表が伝えられる．
そして，通常のじゃんけんと同じように同時に手を出しあい，伝えられた手の勝敗関係に基いて勝敗を決める．これを 1,000 回 繰り返す．
1 回のじゃんけんの勝敗の結果によって得点が手に入り，相手に勝利した場合は 3 点，相手と「あいこ」になった場合は 1 点が手に入る．相手に負けてしまった場合は得点を得られない．
このなんだかよくわからないルールのじゃんけんにすっかり戦意を喪失してしまった E 君であったが，どうやら聞くところによると，最終的に相手に得点で勝てなくても，
350 点
以上を獲得すれば何か景品がもらえるらしい．
めんどくさいので
350 点
を得てさっさと大会を後にすることにした．
この問題の目的は，一般化されたじゃんけんをプレイする AI を作成し，ジャッジ側の用意した AI と対戦させて
350 点
以上を獲得することである．
入出力形式
まず入力が以下の形式で与えられる．
N
a
1,1
...
a
1,N
...
a
N,1
...
a
N,N
N
はじゃんけんの手の数である．
各
a
i,j
は
N
個の手の勝敗関係を表す．
a
i,j
は
-
，
o
，
x
のいずれかであり，
-
ならば手
i
が手
j
に対し引き分けることを，
o
ならば手
i
が手
j
に対し勝つことを，
x
なら負けることを示す．
この条件の下で 1,000回 AI とじゃんけんをする．
プログラムは自分の使う手を出力すると，ジャッジの AI が使った手を入力で受けとる事ができる．
例えば C/C++で 3 番目の手を使う場合は
printf("3\n"); fflush(stdout);
とする．次に，
scanf("%d", &judge_ai_hand);
とすると変数
judge_ai_hand
にジャッジの AI が使った手が入る．
なおじゃんけんの手は1-indexedである．
1,000 回のじゃんけんを終えた後は直ちにプログラムを終了せよ．その後，獲得できた得点の合計が 350 点以上であれば正答と判定される．
制約
3 ≤  N ≤  10
i ≠ j
のとき，
a
i,j
∈ {
o
,
x
} であり，
a
i,j
=
o
，
a
j,i
=
x
または
a
i,j
=
x
，
a
j,i
=
o
のどちらか片方が成り立つ．
i = j
のとき，
a
i,j
=
-
である．
AI の出す手は勝敗関係の表
a
i,j
と AI の過去の手にだけ依存し，競技者のプログラムの過去の手や直前に出した手には依存しない．
N
は整数である．
データセットに
N=10
のテストケースは高々 6 個しか含まれていない．
入出力例1
じゃんけんの説明
プログラムの出力
プログラムへの入力
4
-oox
x-oo
xx-o
oxx-
1 回目に競技者の AI が使った手
1
1 回目にジャッジの AI が使った手
2
...
...
...
1,000 回目に競技者の AI が使った手
4
1,000 回目にジャッジの AI が使った手
3
最初にプログラムはじゃんけんの手の表を受け取る．その後，1,000 回のじゃんけんを行う．
ここで，1 回目のじゃんけんでは競技者の AI はジャッジの AI に勝利しているが，
1,000 回目のじゃんけんでは競技者の AI はジャッジの AI に敗北していることに注意せよ．
Writer: 楠本充，小浜翔太郎
Tester: 森槙悟

Submitted solutions:

code_snippet: #include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define FOR(i, m, n) for (int i = (m); i < (n); ++i)
#define rrep(i, n) for (int i = (n)-1; i >= 0; --i)
#define rfor(i, m, n) for (int i = (m); i >= (n); --i)
#define unless(c) if (!(c))
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define range_it(a, l, r) (a).begin() + (l), (a).begin() + (r)

using namespace std;
using ll = long long;
using LD = long double;
using VB = vector<bool>;
using VVB = vector<VB>;
using VI = vector<int>;
using VVI = vector<VI>;
using VL = vector<ll>;
using VVL = vector<VL>;
using VS = vector<string>;
using VD = vector<LD>;
using PII = pair<int, int>;
using VP = vector<PII>;
using PLL = pair<ll, ll>;
using VPL = vector<PLL>;
template <class T> using PQ = priority_queue<T>;
template <class T> using PQS = priority_queue<T, vector<T>, greater<T>>;
constexpr int inf = 1000000000;
constexpr long long inf_ll = 1000000000000000000ll, MOD = 1000000007;
constexpr long double PI = 3.14159265358979323846, EPS = 1e-12;

class Random {
	mt19937 engine;
	random_device rd;

public:
	Random() {
		seed();
	}
	void seed() {
		engine.seed(rd());
	}
	void seed(uint_fast32_t s) {
		engine.seed(s);
	}
	template <class T> T get(T l, T r) {
		assert(l <= r);
		return uniform_int_distribution<T>(l, r)(engine);
	}
} rnd;

int main() {
	int n;
	cin >> n;
	VS s(n);
	rep(i, n) cin >> s[i];

	VI v;
	rep(i, n) {
		if (s[i].find('o') != string::npos) {
			v.push_back(i + 1);
		}
	}
	rep(i, 1000) {
		cout << 10 << endl;
		int x;
		cin >> x;
	}
}
accuracy: 0.02702702702702703
time_ms: 10
memory_kb: 3356
final_rank: 19

code_snippet: /*
Dear ToM,
Congratulations on your graduation!
You did a great job!
     ☆ﾟ*＠*ﾟ☆
　　(＠*｡☆｡*＠
　 /☆｡*＠ﾟ*☆
▲/／｡＠｡*☆＠*
　▼―ｰ｡*＠ﾟ*☆
*/

#include <bits/stdc++.h>
using namespace std;

#define REP(i,s,n) for(int i=s; i<n; ++i)
#define rep(i,n) REP(i,0,n)
#define SORT(c) sort((c).begin(),(c).end())
#define IINF INT_MAX
#define LLINF LLONG_MAX
#define DEBUG false

typedef long long ll;
typedef pair<int, int> ii;

int main(){
	ll n;
	cin >> n;
	vector<string> a(n);
	rep(i, n) cin >> a[i];

	int maxi_ind = 0;
	int maxi_e = 0;
	rep(i, n){
		int e = 0;
		rep(j, n){
			if(a[i][j] == '-') e += 1;
			else if(a[i][j] == 'o') e += 3;
		}
		if(e > maxi_e){
			maxi_ind = i;
			maxi_e = e;
		}
	}

	srand((unsigned int)time(NULL)+1);
	int pre = 1;
	rep(i, 1000){
		//cout << (maxi_ind + 1) << endl;
		//cout << (rand() % n + 1) << endl;
		cout << pre << endl;
		fflush(stdout);

		//int tmp;
		cin >> pre;
	}

	return 0;
}
accuracy: 0.21621621621621623
time_ms: 10
memory_kb: 3380
final_rank: 12

code_snippet: #include<bits/stdc++.h>
using namespace std;

using i64 = int64_t;

struct Hand{
    int lose, win, tie, num;
    bool operator<(const Hand &rhs)const{
        if(lose == rhs.lose)return win > rhs.win;
        return lose < rhs.lose;
    }
};

int main(){
    int n;
    cin >> n;
    vector<vector<int>> v(n, vector<int>(n));
    for(int i=0;i<n;++i){
        for(int j=0;j<n;++j){
            char c;
            cin >> c;
            if(c == '-')v[i][j] = 0;
            else if(c == 'o')v[i][j] = 1;
            else v[i][j] = -1;
        }
    }
    vector<Hand> hands;
    for(int i=0;i<n;++i){
        Hand h({0, 0, 0, 0});
        h.num = i + 1;
        for(int j=0;j<n;++j){
            if(v[i][j] == -1)h.lose++;
            else if(v[i][j] == 0)h.tie++;
            else h.win++;
        }
        hands.push_back(h);
    }
    sort(hands.begin(), hands.end());
    /*
    for(auto e: hands){
        cout << e.num << " " << e.win << " " << e.tie << " " << e.lose << endl;
    }
    */
    vector<int> ans;
    ans.push_back(hands[0].num);
    for(int i=1;i<n;++i){
        if(hands[i].lose == hands[0].lose)ans.push_back(hands[0].num);
        else break;
    }
    int win = 0, tie = 0, lose = 0;
    random_device rnd;
    for(int i=0;i<1000;++i){
        int ai_hand;
        int my_hand;
        if(lose < 500){
            int idx = rnd() % (int)(ans.size());
            my_hand = ans[idx];
        }else{
            my_hand = rnd() % n + 1;
        }
        cout << my_hand << endl;
        cin >> ai_hand;
        if(v[my_hand-1][ai_hand-1] == -1)lose++;
        else if(v[my_hand-1][ai_hand-1] == 0)tie++;
        else win++;
    }

    return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 3392
final_rank: 2

code_snippet: #include<bits/stdc++.h>
using namespace std;

using i64 = int64_t;

struct Hand{
    int lose, win, tie, num;
    bool operator<(const Hand &rhs)const{
        if(lose == rhs.lose)return win > rhs.win;
        return lose < rhs.lose;
    }
};

int main(){
    int n;
    cin >> n;
    vector<vector<int>> v(n, vector<int>(n));
    for(int i=0;i<n;++i){
        for(int j=0;j<n;++j){
            char c;
            cin >> c;
            if(c == '-')v[i][j] = 0;
            else if(c == 'o')v[i][j] = 1;
            else v[i][j] = -1;
        }
    }
    vector<Hand> hands;
    for(int i=0;i<n;++i){
        Hand h({0, 0, 0, 0});
        h.num = i + 1;
        for(int j=0;j<n;++j){
            if(v[i][j] == -1)h.lose++;
            else if(v[i][j] == 0)h.tie++;
            else h.win++;
        }
        hands.push_back(h);
    }
    sort(hands.begin(), hands.end());
    /*
    for(auto e: hands){
        cout << e.num << " " << e.win << " " << e.tie << " " << e.lose << endl;
    }
    */
    vector<int> ans;
    ans.push_back(hands[0].num);
    for(int i=1;i<n;++i){
        if(hands[i].lose == hands[0].lose)ans.push_back(hands[0].num);
        else break;
    }
    random_device rnd;
    for(int i=0;i<1000;++i){
        int ai_hand;
        int hand = rnd() % (int)(ans.size());
        cout << ans[hand] << endl;
        cin >> ai_hand;
    }

    return 0;
}
accuracy: 0.4864864864864865
time_ms: 10
memory_kb: 3368
final_rank: 4

code_snippet: #include<bits/stdc++.h>
using namespace std;

using i64 = int64_t;

struct Hand{
    int lose, win, tie, num;
    bool operator<(const Hand &rhs)const{
        if(lose == rhs.lose)return win > rhs.win;
        return lose < rhs.lose;
    }
};

int main(){
    int n;
    cin >> n;
    vector<vector<int>> v(n, vector<int>(n));
    for(int i=0;i<n;++i){
        for(int j=0;j<n;++j){
            char c;
            cin >> c;
            if(c == '-')v[i][j] = 0;
            else if(c == 'o')v[i][j] = 1;
            else v[i][j] = -1;
        }
    }
    vector<Hand> hands;
    for(int i=0;i<n;++i){
        Hand h({0, 0, 0, 0});
        h.num = i + 1;
        for(int j=0;j<n;++j){
            if(v[i][j] == -1)h.lose++;
            else if(v[i][j] == 0)h.tie++;
            else h.win++;
        }
        hands.push_back(h);
    }
    sort(hands.begin(), hands.end());
    /*
    for(auto e: hands){
        cout << e.num << " " << e.win << " " << e.tie << " " << e.lose << endl;
    }
    */
    vector<int> ans;
    ans.push_back(hands[0].num);
    for(int i=1;i<n;++i){
        if(hands[i].lose == hands[0].lose)ans.push_back(hands[0].num);
        else break;
    }
    random_device rnd;
    for(int i=0;i<1000;++i){
        int ai_hand;
        int hand = rnd() % (int)(ans.size());
        cout << ans[0] << endl;
        cin >> ai_hand;
    }

    return 0;
}
accuracy: 0.4864864864864865
time_ms: 10
memory_kb: 3368
final_rank: 4

code_snippet: #include<bits/stdc++.h>
using namespace std;

using i64 = int64_t;

struct Hand{
    int lose, win, tie, num;
    bool operator<(const Hand &rhs)const{
        if(lose == rhs.lose)return tie > rhs.tie;
        return lose < rhs.lose;
    }
};

int main(){
    int n;
    cin >> n;
    vector<vector<int>> v(n, vector<int>(n));
    for(int i=0;i<n;++i){
        for(int j=0;j<n;++j){
            char c;
            cin >> c;
            if(c == '-')v[i][j] = 0;
            else if(c == 'o')v[i][j] = 1;
            else v[i][j] = -1;
        }
    }
    vector<Hand> hands;
    for(int i=0;i<n;++i){
        Hand h({0, 0, 0, 0});
        h.num = i + 1;
        for(int j=0;j<n;++j){
            if(v[i][j] == -1)h.lose++;
            else if(v[i][j] == 0)h.tie++;
            else h.win++;
        }
        hands.push_back(h);
    }
    sort(hands.begin(), hands.end());
    /*
    for(auto e: hands){
        cout << e.num << " " << e.win << " " << e.tie << " " << e.lose << endl;
    }
    */
    vector<int> ans;
    ans.push_back(hands[0].num);
    for(int i=1;i<n;++i){
        if(hands[i].lose == hands[0].lose)ans.push_back(hands[0].num);
        else break;
    }
    random_device rnd;
    for(int i=0;i<1000;++i){
        int ai_hand;
        int hand = rnd() % (int)(ans.size());
        cout << ans[0] << endl;
        cin >> ai_hand;
    }

    return 0;
}
accuracy: 0.4864864864864865
time_ms: 10
memory_kb: 3392
final_rank: 8

code_snippet: #include<bits/stdc++.h>
using namespace std;

using i64 = int64_t;

struct Hand{
    int lose, win, tie, num;
    bool operator<(const Hand &rhs)const{
        if(lose == rhs.lose)return tie > rhs.tie;
        return lose < rhs.lose;
    }
};

int main(){
    int n;
    cin >> n;
    vector<vector<int>> v(n, vector<int>(n));
    for(int i=0;i<n;++i){
        for(int j=0;j<n;++j){
            char c;
            cin >> c;
            if(c == '-')v[i][j] = 0;
            else if(c == 'o')v[i][j] = 1;
            else v[i][j] = -1;
        }
    }
    vector<Hand> hands;
    for(int i=0;i<n;++i){
        Hand h({0, 0, 0, 0});
        h.num = i + 1;
        for(int j=0;j<n;++j){
            if(v[i][j] == -1)h.lose++;
            else if(v[i][j] == 0)h.tie++;
            else h.win++;
        }
        hands.push_back(h);
    }
    sort(hands.begin(), hands.end());
    /*
    for(auto e: hands){
        cout << e.num << " " << e.win << " " << e.tie << " " << e.lose << endl;
    }
    */
    vector<int> ans;
    ans.push_back(hands[0].num);
    for(int i=1;i<n;++i){
        if(hands[i].lose == hands[0].lose)ans.push_back(hands[0].num);
        else break;
    }
    random_device rnd;
    for(int i=0;i<1000;++i){
        int ai_hand;
        int hand = rnd() % (int)(ans.size());
        cout << ans[hand] << endl;
        cin >> ai_hand;
    }

    return 0;
}
accuracy: 0.4864864864864865
time_ms: 10
memory_kb: 3380
final_rank: 6

code_snippet: #include<bits/stdc++.h>
using namespace std;

using i64 = int64_t;

struct Hand{
    int lose, win, tie, num;
    bool operator<(const Hand &rhs)const{
        //if(lose == rhs.lose)return tie > rhs.tie;
        return lose < rhs.lose;
    }
};

int main(){
    int n;
    cin >> n;
    vector<vector<int>> v(n, vector<int>(n));
    for(int i=0;i<n;++i){
        for(int j=0;j<n;++j){
            char c;
            cin >> c;
            if(c == '-')v[i][j] = 0;
            else if(c == 'o')v[i][j] = 1;
            else v[i][j] = -1;
        }
    }
    vector<Hand> hands;
    for(int i=0;i<n;++i){
        Hand h({0, 0, 0, 0});
        h.num = i + 1;
        for(int j=0;j<n;++j){
            if(v[i][j] == -1)h.lose++;
            else if(v[i][j] == 0)h.tie++;
            else h.win++;
        }
        hands.push_back(h);
    }
    sort(hands.begin(), hands.end());
    /*
    for(auto e: hands){
        cout << e.num << " " << e.win << " " << e.tie << " " << e.lose << endl;
    }
    */
    vector<int> ans;
    ans.push_back(hands[0].num);
    for(int i=1;i<n;++i){
        if(hands[i].lose == hands[0].lose)ans.push_back(hands[0].num);
        else break;
    }
    random_device rnd;
    for(int i=0;i<1000;++i){
        int ai_hand;
        int hand = rnd() % (int)(ans.size());
        cout << ans[hand] << endl;
        cin >> ai_hand;
    }

    return 0;
}
accuracy: 0.4864864864864865
time_ms: 10
memory_kb: 3380
final_rank: 6

code_snippet: #include <bits/stdc++.h>
using namespace std;

using ll = long long int;
using P = pair<int, int>;
using P3 = pair<ll,P>;
using PP = pair<P, P>;
constexpr int INF = 1 << 30;
constexpr ll MOD = ll(1e9) + 7;
constexpr int di[] = {0, 1, 0, -1};
constexpr int dj[] = {1, 0, -1, 0};
constexpr double EPS = 1e-8;

bool solve(){
    int n, q = 1000;
    cin >> n;
    vector<string> a(n);
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    vector<int> cnt(n, 0);
    vector<int> pre;
    for(int i=0;i<n;i++){
        pre.push_back(i+1);
    }
    for(int t=0;t<q;t++){
        int hnd = 1, maxi = -INF;
        for(auto x : pre){
            cnt[x]++;
        }
        for(int i=0;i<n;i++){
            int scr = 0;
            for(int j=0;j<n;j++){
                if(a[i][j] == 'o') scr += 2*cnt[j];
                else if(a[i][j]== '-') scr += cnt[j];
                // else  scr--;
                // if(a[i][j] == 'x') scr-=cnt[j];
            }
            if(scr > maxi){
                maxi = scr;
                hnd = i+1;
            }
        }
        cout << hnd << endl;
        int ai;
        cin >> ai;
        pre.push_back(ai-1);
        if(pre.size() > 50) pre.erase(pre.begin());
    }
    return false;
}

int main(){
    solve();
    // while(!solve());
    // int t; cin >> t; for(;t>0;t--) solve();
    return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 3392
final_rank: 2

code_snippet: #include<bits/stdc++.h>
using namespace std;

using i64 = int64_t;

int main(){
    int n;
    cin >> n;
    vector<vector<int>> v(n, vector<int>(n));
    for(int i=0;i<n;++i){
        for(int j=0;j<n;++j){
            char c;
            cin >> c;
            if(c == '-')v[i][j] = 0;
            else if(c == 'o')v[i][j] = 1;
            else v[i][j] = -1;
        }
    }
    int mini = n, hand = 0;
    for(int i=0;i<n;++i){
        int cnt = 0;
        for(int j=0;j<n;++j){
            if(v[i][j] == -1)cnt++;
        }
        if(cnt < mini){
            mini = cnt;
            hand = i + 1;
        }
    }
    for(int i=0;i<1000;++i){
        int ai_hand;
        cout << hand << endl;
        cin >> ai_hand;
    }

    return 0;
}
accuracy: 0.4864864864864865
time_ms: 10
memory_kb: 3392
final_rank: 8

code_snippet: /*
Dear ToM,
Congratulations on your graduation!
You did a great job!
     ☆ﾟ*＠*ﾟ☆
　　(＠*｡☆｡*＠
　 /☆｡*＠ﾟ*☆
▲/／｡＠｡*☆＠*
　▼―ｰ｡*＠ﾟ*☆
*/

#include <bits/stdc++.h>
using namespace std;

#define REP(i,s,n) for(int i=s; i<n; ++i)
#define rep(i,n) REP(i,0,n)
#define SORT(c) sort((c).begin(),(c).end())
#define IINF INT_MAX
#define LLINF LLONG_MAX
#define DEBUG false

typedef long long ll;
typedef pair<int, int> ii;

int main(){
	ll n;
	cin >> n;
	vector<string> a(n);
	rep(i, n) cin >> a[i];

	int maxi_ind = 0;
	int maxi_e = 0;
	rep(i, n){
		int e = 0;
		rep(j, n){
			if(a[i][j] == '-') e += 1;
			else if(a[i][j] == 'o') e += 3;
		}
		if(e > maxi_e){
			maxi_ind = i;
			maxi_e = e;
		}
	}

	rep(i, 1000){
		cout << (maxi_ind + 1) << endl;
		fflush(stdout);

		int tmp;
		cin >> tmp;
	}

	return 0;
}
accuracy: 0.4864864864864865
time_ms: 10
memory_kb: 3396
final_rank: 11

code_snippet: #include <bits/stdc++.h>
using namespace std;

using ll = long long int;
using P = pair<int, int>;
using P3 = pair<ll,P>;
using PP = pair<P, P>;
constexpr int INF = 1 << 30;
constexpr ll MOD = ll(1e9) + 7;
constexpr int di[] = {0, 1, 0, -1};
constexpr int dj[] = {1, 0, -1, 0};
constexpr double EPS = 1e-8;

bool solve(){
    int n, q = 1000;
    cin >> n;
    vector<string> a(n);
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    vector<int> cnt(n, 1);
    for(int t=0;t<q;t++){
        int hnd = 1, maxi = -INF;
        for(int i=0;i<n;i++){
            int scr = 0;
            for(int j=0;j<n;j++){
                // if(a[i][j] == 'o') scr += 2*cnt[j];
                // else if(a[i][j]== '-') scr += cnt[j];
                // else  scr--;
                if(a[i][j] == 'x') scr-=cnt[j];
            }
            if(scr > maxi){
                maxi = scr;
                hnd = i+1;
            }
        }
        cout << hnd << endl;
        int ai;
        cin >> ai;
        cnt[ai-1]++;
    }
    return false;
}

int main(){
    solve();
    // while(!solve());
    // int t; cin >> t; for(;t>0;t--) solve();
    return 0;
}
accuracy: 0.1891891891891892
time_ms: 10
memory_kb: 3380
final_rank: 13

code_snippet: #include <bits/stdc++.h>
using namespace std;

using ll = long long int;
using P = pair<int, int>;
using P3 = pair<ll,P>;
using PP = pair<P, P>;
constexpr int INF = 1 << 30;
constexpr ll MOD = ll(1e9) + 7;
constexpr int di[] = {0, 1, 0, -1};
constexpr int dj[] = {1, 0, -1, 0};
constexpr double EPS = 1e-8;

bool solve(){
    int n, q = 1000;
    cin >> n;
    vector<string> a(n);
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    vector<int> cnt(n, 1);
    for(int t=0;t<q;t++){
        int hnd = 1, maxi = 0;
        for(int i=0;i<n;i++){
            int scr = 0;
            for(int j=0;j<n;j++){
                if(a[i][j] == 'o') scr += cnt[j];
                else if(a[i][j]== '-') scr += cnt[j];
                else  scr-=2;
            }
            if(scr > maxi){
                maxi = scr;
                hnd = i+1;
            }
        }
        cout << hnd << endl;
        int ai;
        cin >> ai;
        cnt[ai-1]+=1;
    }
    return false;
}

int main(){
    solve();
    // while(!solve());
    // int t; cin >> t; for(;t>0;t--) solve();
    return 0;
}
accuracy: 0.1891891891891892
time_ms: 10
memory_kb: 3388
final_rank: 14

code_snippet: #include <bits/stdc++.h>
using namespace std;

using ll = long long int;
using P = pair<int, int>;
using P3 = pair<ll,P>;
using PP = pair<P, P>;
constexpr int INF = 1 << 30;
constexpr ll MOD = ll(1e9) + 7;
constexpr int di[] = {0, 1, 0, -1};
constexpr int dj[] = {1, 0, -1, 0};
constexpr double EPS = 1e-8;

bool solve(){
    int n, q = 1000;
    cin >> n;
    vector<string> a(n);
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    vector<int> cnt(n, 1);
    for(int t=0;t<q;t++){
        int hnd = 1, maxi = 0;
        for(int i=0;i<n;i++){
            int scr = 0;
            for(int j=0;j<n;j++){
                if(a[i][j] == 'o') scr += 2*cnt[j];
                else if(a[i][j]== '-') scr += cnt[j];
                else  scr--;
            }
            if(scr > maxi){
                maxi = scr;
                hnd = i+1;
            }
        }
        cout << hnd << endl;
        int ai;
        cin >> ai;
        cnt[ai-1]++;
    }
    return false;
}

int main(){
    solve();
    // while(!solve());
    // int t; cin >> t; for(;t>0;t--) solve();
    return 0;
}
accuracy: 0.13513513513513514
time_ms: 10
memory_kb: 3368
final_rank: 16

code_snippet: #include <bits/stdc++.h>
using namespace std;

using ll = long long int;
using P = pair<int, int>;
using P3 = pair<ll,P>;
using PP = pair<P, P>;
constexpr int INF = 1 << 30;
constexpr ll MOD = ll(1e9) + 7;
constexpr int di[] = {0, 1, 0, -1};
constexpr int dj[] = {1, 0, -1, 0};
constexpr double EPS = 1e-8;

bool solve(){
    int n, q = 1000;
    cin >> n;
    vector<string> a(n);
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    vector<int> cnt(n, 1);
    for(int t=0;t<q;t++){
        int hnd = 1, maxi = 0;
        for(int i=0;i<n;i++){
            int scr = 0;
            for(int j=0;j<n;j++){
                if(a[i][j] == 'o') scr += 2*cnt[j];
                else if(a[i][j]== '-') scr += cnt[j];
                else  scr--;
            }
            if(scr > maxi){
                maxi = scr;
                hnd = i+1;
            }
        }
        cout << hnd << endl;
        int ai;
        cin >> ai;
        cnt[ai-1]+=5;
    }
    return false;
}

int main(){
    solve();
    // while(!solve());
    // int t; cin >> t; for(;t>0;t--) solve();
    return 0;
}
accuracy: 0.13513513513513514
time_ms: 10
memory_kb: 3344
final_rank: 15

code_snippet: #include <bits/stdc++.h>
using namespace std;

using ll = long long int;
using P = pair<int, int>;
using P3 = pair<ll,P>;
using PP = pair<P, P>;
constexpr int INF = 1 << 30;
constexpr ll MOD = ll(1e9) + 7;
constexpr int di[] = {0, 1, 0, -1};
constexpr int dj[] = {1, 0, -1, 0};
constexpr double EPS = 1e-8;

bool solve(){
    int n, q = 1000;
    cin >> n;
    vector<string> a(n);
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    vector<int> cnt(n, 1);
    for(int t=0;t<q;t++){
        int hnd = 0, maxi = 0;
        for(int i=0;i<n;i++){
            int scr = 0;
            for(int j=0;j<n;j++){
                if(a[i][j] == 'o') scr += 3*cnt[j];
                if(a[i][j ]== '-') scr += cnt[j];
            }
            if(scr > maxi){
                maxi = scr;
                hnd = i+1;
            }
        }
        cout << hnd << endl;
        int ai;
        cin >> ai;
        cnt[ai-1]+=100;
    }
    return false;
}

int main(){
    solve();
    // while(!solve());
    // int t; cin >> t; for(;t>0;t--) solve();
    return 0;
}
accuracy: 0.13513513513513514
time_ms: 10
memory_kb: 3388
final_rank: 17

code_snippet: #include <bits/stdc++.h>
using namespace std;

using ll = long long int;
using P = pair<int, int>;
using P3 = pair<ll,P>;
using PP = pair<P, P>;
constexpr int INF = 1 << 30;
constexpr ll MOD = ll(1e9) + 7;
constexpr int di[] = {0, 1, 0, -1};
constexpr int dj[] = {1, 0, -1, 0};
constexpr double EPS = 1e-8;

bool solve(){
    int n, q = 1000;
    cin >> n;
    vector<string> a(n);
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    vector<int> cnt(n, 1);
    for(int t=0;t<q;t++){
        int hnd = 0, maxi = 0;
        for(int i=0;i<n;i++){
            int scr = 0;
            for(int j=0;j<n;j++){
                if(a[i][j] == 'o') scr += 3*cnt[j];
                if(a[i][j ]== '-') scr += cnt[j];
            }
            if(scr > maxi){
                maxi = scr;
                hnd = i+1;
            }
        }
        cout << hnd << endl;
        int ai;
        cin >> ai;
        cnt[ai-1]+=5;
    }
    return false;
}

int main(){
    solve();
    // while(!solve());
    // int t; cin >> t; for(;t>0;t--) solve();
    return 0;
}
accuracy: 0.13513513513513514
time_ms: 10
memory_kb: 3388
final_rank: 17

code_snippet: // これはなに?
#include<iostream>
#include<random>
using namespace std;

int main(){
    int n;
    cin >> n;
    char s[n][n];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cin >> s[i][j];
        }
    }
    int e = rand()%n+1;
    for(int i = 0; i < 1000; i++){
        cout << e << endl;
        int x;  cin >> x;
        if(s[e-1][x-1] == 'x')  e = rand()%n+1;
    }
    return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 3376
final_rank: 1

code_snippet: // これはなに?
#include<iostream>
#include<random>
using namespace std;

int main(){
    int n;
    cin >> n;
    char s[n][n];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cin >> s[i][j];
        }
    }
    int e = rand()%n+1;
    for(int i = 0; i < 1000; i++){
        cout << 10 << endl;
        int x;  cin >> x;
        if(s[x-1][e-1] == 'x')  e = rand()%n+1;
    }
    return 0;
}
accuracy: 0.02702702702702703
time_ms: 10
memory_kb: 3360
final_rank: 20

code_snippet: #include<iostream>
using namespace std;

int main(){
    int n;
    cin >> n;
    int me = -1, cnt = 0;
    for(int i = 0; i < n; i++){
        int tmp = 0;
        for(int j = 0; j < n; j++){
            char c; cin >> c;
            tmp += c=='o';
        }
        if(tmp > cnt)   cnt = tmp, me = i;
    }
    me++;
    for(int i = 0; i < 1000; i++){
        cout << me << endl << flush;
        int x;  cin >> x;
    }
    return 0;
}
accuracy: 0.4864864864864865
time_ms: 10
memory_kb: 3392
final_rank: 8