Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // #pragma GCC optimize("O3")
- // #pragma GCC optimize("unroll-loops")
- // #pragma comment(linker,"/stack:200000000")
- #include <bits/stdc++.h>
- using namespace std;
- #define DEBUG
- #ifndef DEBUG
- #define endl "\n"
- #endif
- #define PI 2*acos(0.0)
- #define INFLL 1e18
- #define CLEAR(x,val) memset(x,val,sizeof(x))
- #define print(x) cout << x << endl, exit(0)
- #define watch(x) cerr << #x << " -> " << x << endl
- // #define int long long
- typedef long long ll;
- typedef long double ld;
- typedef pair<int,int> pii;
- const int INF = 1000000000;
- const int MOD = 1000000007; //998244353
- const int dx[]= {1,0,-1,0,1,-1,1,-1};
- const int dy[]= {0,1,0,-1,1,1,-1,-1};
- void show(const vector<int> &vec) {
- cout << vec.size() << endl;
- for(int val : vec)
- cout << val << " "; cout << endl;
- }
- signed main()
- {
- //freopen("","r",stdin);
- //freopen("","w",stdout);
- cin.tie(0), cout.tie(0);
- ios::sync_with_stdio(0);
- int q;
- cin >> q;
- while(q--) {
- int n;
- cin >> n;
- int a = 0, b = 0, c = 0, d = 0;
- vector<string> v(n);
- map<string,bool> mp;
- for(int i = 0; i < n; i++) {
- cin >> v[i];
- mp[v[i]] = true;
- if(v[i][0] == '0' && v[i].back() == '0')
- ++a;
- if(v[i][0] == '0' && v[i].back() == '1')
- ++b;
- if(v[i][0] == '1' && v[i].back() == '0')
- ++c;
- if(v[i][0] == '1' && v[i].back() == '1')
- ++d;
- }
- if(b == 0 && c == 0) {
- if(!(a && d))
- cout << 0 << endl;
- else
- cout << -1 << endl;
- }
- else {
- vector<int> res;
- if(b > c) {
- for(int i = 0; i < n && abs(b-c)>1; i++) {
- if(v[i][0] == '0' && v[i].back() == '1') {
- string str = v[i];
- reverse(str.begin(), str.end());
- if(!mp[str]) {
- res.push_back(i+1);
- --b, ++c;
- }
- }
- }
- } else {
- for(int i = 0; i < n && abs(c-b)>1; i++) {
- if(v[i][0] == '1' && v[i].back() == '0') {
- string str = v[i];
- reverse(str.begin(), str.end());
- if(!mp[str]) {
- res.push_back(i+1);
- --c, ++b;
- }
- }
- }
- }
- if(abs(b-c) > 1)
- cout << "-1" << endl;
- else
- show(res);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment