CSES - Datatähti 2019 alku - Results
Submission details
Task:Taulukko
Sender:tuomask
Submission time:2018-10-10 21:17:19 +0300
Language:C++
Status:COMPILE ERROR

Compiler report

input/code.cpp:5:9: error: 'll' does not name a type
 typedef ll long long;
         ^~
input/code.cpp:8:1: error: 'll' does not name a type
 ll x[500000];
 ^~
input/code.cpp:10:13: error: 'll' was not declared in this scope
 bool loytyy(ll a, int alku, int loppu) {
             ^~
input/code.cpp:10:19: error: expected primary-expression before 'int'
 bool loytyy(ll a, int alku, int loppu) {
                   ^~~
input/code.cpp:10:29: error: expected primary-expression before 'int'
 bool loytyy(ll a, int alku, int loppu) {
                             ^~~
input/code.cpp:10:38: error: expression list treated as compound expression in initializer [-fpermissive]
 bool loytyy(ll a, int alku, int loppu) {
                                      ^
input/code.cpp: In function 'int main()':
input/code.cpp:19:34: error: 'x' was not declared in this scope
   for (int i=0; i<n; i++) cin >> x[i];
                                  ^
input/code.cpp:25:19: error: 'x' was not declared in this scope...

Code

#include <bits/stdc++.h>
using namespace std;
typedef ll long long;
int n,k;
ll x[500000];
bool loytyy(ll a, int alku, int loppu) {
for (int i=alku; i<loppu; i++) {
if (x[i] == a) return true;
}
return false;
}
int main() {
cin >> n >> k;
for (int i=0; i<n; i++) cin >> x[i];
int s=0, eri=0, a=0, b=0;
while (a < n) {
// siirretään ylärajaa niin pitkälle kuin voidaan
while (b < n && eri <= k) {
// uutta ylintä lukua ei löydy aiemmista luvuista,
if (!loytyy(x[b], a, b)) {
if (eri == k) break;
// korotetaan erilaisten lukujen määrää
eri++;
}
b++;
}
s += b-a;
// siirretään alarajaa
ll eka = x[a];
a++;
// jos poistettava eka luku ei löydy muualta,
// vähennetään erilaisten lukujen määrää
if (!loytyy(eka, a, b)) eri--;
}
cout << s << "\n";
}