| Task: | Taulukko |
| Sender: | 1 |
| Submission time: | 2018-10-08 21:31:01 +0300 |
| Language: | C++ |
| Status: | COMPILE ERROR |
Compiler report
input/code.cpp: In function 'ul countDynamic(std::vector<long unsigned int>*, int, int)':
input/code.cpp:21:27: error: 'max_element' was not declared in this scope
vector <lVect> items(*max_element(seq->begin(), seq->end()) + 1);
^~~~~~~~~~~
input/code.cpp:21:27: note: suggested alternative: 'max_align_t'
vector <lVect> items(*max_element(seq->begin(), seq->end()) + 1);
^~~~~~~~~~~
max_align_t
input/code.cpp:26:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (ul j = 0; j < size; j++) {
~~^~~~~~
input/code.cpp:31:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (countNonZero(&items) <= k) {
~~~~~~~~~~~~~~~~~~~~~^~~~
input/code.cpp:37:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (countNonZero(&items) <= k) {...Code
#include <iostream>
#include <vector>
using namespace std;
typedef vector <unsigned long> lVect;
typedef unsigned long ul;
ul countNonZero(vector <lVect>* items) {
ul n = 0;
for (ul i = 0; i < (*items).size(); i++) {
if ((*items)[i][1] != 0) {
n += 1;
}
}
return n;
}
ul countDynamic(vector <ul>* seq, int size, int k) {
ul validSublists = 0;
vector <lVect> items(*max_element(seq->begin(), seq->end()) + 1);
for (ul i = 0; i < items.size(); i++) {
vector <ul> c = {i, 0};
items[i] = c;
}
for (ul j = 0; j < size; j++) {
ul index = (*seq)[j];
// cout << "seq[j]: " << index << endl;
items[index][1] += 1;
}
if (countNonZero(&items) <= k) {
validSublists += 1;
}
for (ul q = size; q < (*seq).size(); q++) {
items[(*seq)[q]][1] += 1;
items[(*seq)[q - size]][1] -= 1;
if (countNonZero(&items) <= k) {
validSublists += 1;
}
}
return validSublists;
}
int main(int argc, const char * argv[]) {
int arrayLength;
int k;
cin >> arrayLength;
cin >> k;
vector <ul> list(arrayLength);
for (int i = 0; i < arrayLength; i++) {
int next;
cin >> next;
list[i] = next;
}
ul sum = 0;
for (int n = 1; n < k + 1; n++) {
sum += list.size() - n + 1;
}
for (int m = k + 1; m < list.size() + 1; m++) {
sum += countDynamic(&list, m, k);
}
cout << sum;
return 0;
}
