1894B - Two Out of Three - CodeForces Solution


constructive algorithms

Please click on ads to support us..

Python Code:

for _ in range(int(input())):
	n=int(input())
	a=list(map(int,input().split()))
	t=[0]*(max(a)+1)
	for i in range(n):
		t[a[i]]+=1
	c=0
	for i in t:
		if i >= 2: c+=1
	if c<2: print(-1); continue
	else:
		cnt=0; b=[]
		a=[(a[i], i) for i in range(n)]
		a.sort()
		i=0
		while i < n:
			if t[a[i][0]]>=2:
				if cnt==0:
					b+=[1]+[2]*(t[a[i][0]]-1);
				else:
					b+=[1]+(t[a[i][0]]-1)*[3];
				cnt+=1
			else: b+=[1]
			i=len(b)
		c=[0]*n
		for i in range(n):
			c[a[i][1]] = b[i]
		print(*c); continue
	print(-1)

C++ Code:

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


int32_t main() {
  int T;
  cin>>T;
  while(T--) {
  int n;
  cin>>n;
  map<int,vector<int>>mp;
  vector<int>arr(n);
  for (int i=0;i<n;i++) cin>>arr[i];
  for (int i=0;i<n;i++) {
    mp[arr[i]].push_back(i);
  }
  int check=0;
  for (auto x:mp) {
    if (x.second.size()>=2) check++;
  }
  if (check<=1) cout<<-1<<endl;
  else {
    vector<int>out(n);
    int c=0;
    for (auto x:mp) {
      if (c%2==0) {
        for (int i=0;i<x.second.size();i++) {
             if (i%2==0) {
             out[x.second[i]]=1;
             }
             else out[x.second[i]]=2;
        }
      }
      else {
        for (int i=0;i<x.second.size();i++) {
             if (i%2==0) {
             out[x.second[i]]=1;
             }
             else out[x.second[i]]=3;
        }
      }
      if (x.second.size()>1) c++;
    }
    for (auto y:out) cout<<y<<" ";
    cout<<endl;
  }
  }
}
  
    


Comments

Submit
0 Comments
More Questions

1025D - Recovering BST
439A - Devu the Singer and Churu the Joker
1323A - Even Subset Sum Problem
1095A - Repeating Cipher
630F - Selection of Personnel
630K - Indivisibility
20B - Equation
600B - Queries about less or equal elements
1015A - Points in Segments
1593B - Make it Divisible by 25
680C - Bear and Prime 100
1300A - Non-zero
1475E - Advertising Agency
1345B - Card Constructions
1077B - Disturbed People
653A - Bear and Three Balls
794A - Bank Robbery
157A - Game Outcome
3B - Lorry
1392A - Omkar and Password
489A - SwapSort
932A - Palindromic Supersequence
433A - Kitahara Haruki's Gift
672A - Summer Camp
1277A - Happy Birthday Polycarp
577A - Multiplication Table
817C - Really Big Numbers
1355A - Sequence with Digits
977B - Two-gram
993A - Two Squares