Cod sursa(job #738580)

Utilizator mihaitza22Mihai Nan mihaitza22 Data 20 aprilie 2012 23:13:40
Problema Distincte Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#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);
    }
}