Cod sursa(job #2169010)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 14 martie 2018 13:05:09
Problema Distincte Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <set>
#include <vector>
#include <cstring>

using namespace std;

ifstream f("distincte.in");
ofstream g("distincte.out");

const int N = 100005;
set<pair<int,int> > qr[N];
set<pair<int,int> >::iterator w, e;
int n, k, m, exist[N], i, j, a[N];
bool viz[N];
long long sol[N], x, y, suma;

int main() {
    f >> n >> k >> m;
    for (i = 1; i <= n; i++)
        f >> a[i];
    for (i = 1; i <= m; i++) {
        f >> x >> y;
        exist[x] = 1;
        qr[x].insert({y, i});
    }
    for (i = 1; i <= n; i++) {
        if (exist[i] == 0) continue;
        for (j = i; j <= n && suma > 0; j++)
            if (viz[a[j]]) viz[a[j]] = 0, suma -= a[j];
        suma = 0;
        w = qr[i].begin();
        e = qr[i].end();
        for (j = i; j <= n && w != e; j++) {
            if (viz[a[j]] == 0)
                viz[a[j]] = 1, suma += a[j];
            if (j == w -> first){
                sol[(*w).second] = suma;
                w++;
            }
        }
    }
    for (i = 1; i <= m; i++)
        g << sol[i] << '\n';
    return 0;
}