| Task: | Taulukko |
| Sender: | intoo |
| Submission time: | 2018-10-10 20:24:25 +0300 |
| Language: | C++ |
| Status: | COMPILE ERROR |
Compiler report
input/code.cpp:6:26: error: expected constructor, destructor, or type conversion before '(' token
ios_base::sync_with_stdio(0);
^
input/code.cpp:7:1: error: 'cin' does not name a type
cin.tie(0);
^~~
input/code.cpp: In function 'int main()':
input/code.cpp:26:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (z.size() > k) {
~~~~~~~~~^~~
input/code.cpp:31:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (q.size() == k) break;
~~~~~~~~~^~~~Code
#include <iostream>
#include <unordered_set>
using namespace std;
ios_base::sync_with_stdio(0);
cin.tie(0);
long long t[505050][2], l[505050];
int main() {
long long n, k, m = 0, a;
cin >> n >> k;
for (long long i = 0; i < n; i++) {
cin >> a;
if (t[m-1][0] != a) {
t[m++][0] = a;
}
t[m-1][1]++;
}
long long s = 0;
long long x = 0, o = 0;
unordered_set<long long> z;
for (long long i = 0; i < m; i++) {
z.insert(t[i][0]);
if (z.size() > k) {
unordered_set<long long> q;
for (long long j = i-1; j >= 0; j--) {
i = j;
q.insert(t[j][0]);
if (q.size() == k) break;
l[o] += t[j][1];
}
o++;
s += x*((x+1)/2);
x = 0;
z.clear();
continue;
}
x += t[i][1];
}
s += x*(x+1)/2;
for (long long i = 0; i < o; i++) s -= l[i]*((l[i]+1)/2);
cout << s << endl;
}
