Cod sursa(job #37885)

Utilizator vmaneavmanea vmanea Data 25 martie 2007 12:59:06
Problema Distincte Scor 30
Compilator c Status done
Runda preONI 2007, Runda 4, Clasele 11-12 Marime 0.76 kb
#include <stdio.h>
#define nmax 100005

int minim(int i, int j)
{
	return i < j? i: j;
}

int maxim(int i, int j)
{
	return i < j? i: j;
}

int N, M, i, ultim, K, x, y, j;

long suma;

long A[nmax];

int porneste[nmax], VC[nmax];

int main(void)
{
	freopen("distincte.in", "r", stdin);
	freopen("distincte.out", "w", stdout);

	scanf("%d%d%d", &N, &K, &M);

	for (i = 1; i <= N; ++i)
	{
		scanf("%ld", &A[i]);

		if (A[i] != A[ultim])
			A[++ultim] = A[i];

		porneste[i] = ultim;
	}

	for (i = 1; i <= M; ++i)
	{
		scanf("%d%d", &x, &y);

		for (suma = 0, j = porneste[x]; j <= porneste[y] && j <= ultim; ++j)
			if (VC[A[j]] != i)
			{
				suma += A[j];
				VC[A[j]] = i;
			}

		printf("%ld\n", suma);
	}

	return 0;
}