Pagini recente » Cod sursa (job #3122884) | Cod sursa (job #3170656) | Cod sursa (job #1007744) | Cod sursa (job #2862799) | Cod sursa (job #738580)
Cod sursa(job #738580)
#include <iostream>
#include <stdio.h>
#define nmax 10000
using namespace std;
int A[nmax], n, m, k, i, j, v[nmax], nr = 1, h, x, y, B[nmax], mih;
long long suma;
void merge_sort(int l, int r) {
int m = (l + r) >> 1, i, j, k;
if( l == r ) return;
merge_sort( l, m );
merge_sort( m + 1, r );
for( i = l, j = m+1, k = l; i <= m || j <= r; )
if( j > r || (i <= m && A[i] < A[j]) )
B[ k++ ] = A[ i++ ];
else
B[ k++ ] = A[ j++ ];
for( k = l; k <= r; k++ )
A[k] = B[k];
}
int main()
{
freopen("distincte.in","r",stdin);
freopen("distincte.out","w",stdout);
scanf("%d %d %d\n", &n, &k, &m);
for (i=1;i<=n;i++)
{
scanf("%d\n", &v[i]);
}
for (i=1;i<=m;i++)
{
scanf("%d %d", &x, &y);
suma = 0;
h=1;
nr=1;
for (j=x;j<=y;j++)
{
A[h] = v[j];
h++;
}
h=h-1;
merge_sort(1, h);
nr = x+1;
for (mih=1;mih<=h;mih++)
{
if (A[mih] != A[mih+1])
suma += A[mih];
}
printf("%lld\n", suma);
}
}