CHEFVOTE - Editorial

I can’t find mistake in following solution

using namespace std;
 
 
 
int main()
{
	int T = 0;
 
	int N = 0;
	int sum = 0;
	int tmp = 0;
	bool flag = false;
	int arr[100];
	int arr1[100];
	cin >> T;
 
	for (int i = 0; i < T; i++)
	{ 
		flag = false;
		sum = 0;
 
		cin >> N;
		for (int j = 0; j < N; j++)
		{
			cin >> arr[j];
			//sum += tmp;
 
			//if (sum>N || tmp >= N)
			//{
			//	flag = true;
			//}
		}
 
		for (int a = 0; a < N; a++)
		{
			sum += arr[a];
 
			if (arr[a] >= N)
			{
				flag = true;
				break;
			}
 
			
			if (sum > N)
			{
				flag = true;
				break;
			}
 
		}
 
		if (sum < N)
			flag = true;
		if (flag)
		{
			cout << -1 << "\n";
		}
 
		else
		{
			int count1 = 0;
			for (int a = 0; a < N; a++)
			{
				
				for (int b = 0; b < N; b++)
				{
					if (b != a)
					{
						if (arr[b]>0)
						{
							arr[b]--;
							cout << b + 1<<"\t";
						}
					}
				}
 
 
				/*
				if (arr[a] != 0 && a!=N-1)
				{
					cout << a + 2<<" ";
				}
				else if (arr[a] != 0 && a == N - 1)
				{
					cout << 1;
				}*/
			}
			cout << "\n";
 
		}
	
	}
 
 
 
	return 0;
}

// int a[n]- is the input array for each test case
// int k[n] - is the array which stores the output.
vector k (n);
fill (k.begin(),k.end(),-1);
for(int j=n-1;j>=0;j–){
int x=a[j];
int m;
m=j-1;
if(k[0]!=-1)
m=n-1;
for (; m>=-1; m–){
if(x==0)
break;
if(m==-1){
m=n;
continue;
}
if(k[m]==-1){
k[m]=j;
–x;
}
}
}
// ans is printing k[j] + 1; in a loop from 0 <= j < n, j++

@kevinsogo : Please, provide me test cases where this solution fails.

http://www.codechef.com/viewsolution/7007838

@dpraveen : Please show me a test case where my solution fails.

http://www.codechef.com/viewsolution/7007838

Somebody plz tell me the problem with this answer.i am getting wrong answer.i tried everything
http://www.codechef.com/viewsolution/7068018

Somebody plz tell me the problem with this answer.i am getting wrong answer.i tried everything CodeChef: Practical coding for everyone

My soln can anybody clarify the testcase it will fail, my code is here nDTg7t - Online C++0x Compiler & Debugging Tool - Ideone.com
thank you in advance
P.S. i just need a test case on which it fails.

CodeChef: Practical coding for everyone.

can somebody tell me my mistake

https://www.codechef.com/viewsolution/14414054
can someone tell what is wrong with my code i am using the simple algorithm for switching the no. if a[i] == i
i am still betting wrong answer

Hi , i don’t know if anyone has done this question in this way or not ,but here is my solution :
https://www.codechef.com/viewsolution/19279294
I have just continuously assigned each voter to the candidates in the same order 0,1,…n-1 , and if the voter and the candidate turn out to be same, i have matched them with the next one .In this way ,what happens is there are only two possibilities either one of them is left with self voting or no one . if only one of them is left(say x) , we can easily just find a voter(say a) who didn’t vote x and voted y and change the array in this way :- x voted a, and a voted y. in this way , the remaining vote of a is used up and everything else remains in the same order .

oh, thats cool :slight_smile: I also once used max flow in tc for Div 2 level 2 problem :stuck_out_tongue:

yes me too… it is much cleaner

Yes, I know this problem but forgot its name. Thanks!

I felt somewhat bad after seeing somewhat uglier in heading, when your solution description starts.

1 Like

I edited it. Thanks :slight_smile:

By the way, I have removed the graph terms for the most part of the editorial so it’s simpler to read. :slight_smile:

Try the case n = 3, c1 = 0, c2 = 1 and c3 = 2 . Your code will assign 1 to 2, but the only solution is to assign 1 to 3, 2 to 3 and 3 to 2.

@kevinsogo: Yes, Thanks a lot. This renders this comment mostly useless.

O(t*n^2) CodeChef: Practical coding for everyone TLE please clarify what mistake i am doing

Please help with what’s wrong with my solution.
Solution Link: CodeChef: Practical coding for everyone