Cod sursa(job #1807992)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 17 noiembrie 2016 10:20:02
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;

int n, l, u, i, j;
unsigned x;
struct P {
    unsigned val, cnt, start;
};
vector<P >nor;
vector<int> xx;
unsigned long long s;
int nx;
bool cmp(P a, P b) {
    /*if (a.cnt == b.cnt)
        return a.start < b.start;
    return a.cnt < b.cnt;*/
}

int main() {
    FILE *f = fopen("secv5.in", "r");
    FILE *g = fopen("secv5.out", "w");
    fscanf(f, "%d %d %d\n", &n, &l, &u);
    for (i = 1; i <= n; i++) {
        fscanf(f, "%d\n", &x);
        if (!nor.empty()) {
            if (nor.back().val == x)
                nor.back().cnt++;
            else nor.push_back({x, 1, i});
        }
        else nor.push_back({x, 1, i});
    }
    //sort(nor.begin(), nor.end(), cmp);
    for (i = 0; i < nor.size(); i++) {
        xx.clear();
        xx.push_back(nor[i].val);
        nx = 1;
        for (j = i+1; j < nor.size(); j++) {
            if (find(xx.begin(), xx.end(), nor[j].val) == xx.end()) {
                nx++;
                xx.push_back(nor[j].val);
            }
            if (nx >= l && nx <= u) {
                s += nor[i].cnt*nor[j].cnt;
            }
        }
    }
    fprintf(g, "%d", s);
    return 0;
}