Cod sursa(job #2384238)

Utilizator arcoC. Nicolae arco Data 20 martie 2019 15:27:37
Problema Elementul majoritar Scor 90
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>

typedef unsigned int uint;

int main(void)
{
	FILE *in =  fopen("elmaj.in", "r");
	FILE *out = fopen("elmaj.out", "w");

	if(in != NULL && out != NULL)
	{
		int n;
		fscanf(in, "%d%*c", &n);

		int *data = malloc(sizeof(int) * n);

		if(data != NULL)
		{
			int last;
			int count = 1;
			fscanf(in, "%d%*c", &last);
			int i = 1;
			data[0] = last;

			for(; i < n; i++)
			{
				int t;
				fscanf(in, "%d%*c", &t);
				data[i] = t;

				if(count == 0)
				{
					last = t;
					count = 1;
				}
				else
				{
					if(last != t)
					{
						count--;
					}
					else
					{
						count++;
					}
				}
			}

			int occ = 0;

			i = 0;
			for(; i < n; i++)
			{
				if(data[i] == last)
					occ++;
			}

			if(occ >= (n / 2 + 1))
				fprintf(out, "%d %d\n", last, occ);
			else
				fprintf(out, "-1");
			free(data);
		}
		else
		{
			printf("Error\n");
		}

		fclose(in);
		fclose(out);
	}
	else
	{
		printf("file error\n");
	}

	return 0;
}