CSES - Datatähti 2019 alku - Results
Submission details
Task:Taulukko
Sender:Kurns
Submission time:2018-10-07 14:38:46 +0300
Language:C++
Status:COMPILE ERROR

Compiler report

input/code.cpp:1:10: fatal error: stdafx.h: No such file or directory
 #include "stdafx.h"
          ^~~~~~~~~~
compilation terminated.

Code

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <map>

using namespace std;

int main() {

	cin.sync_with_stdio(false);
	int taulukkokoko, sallittu;
	cin >> taulukkokoko >> sallittu;

	vector<int> lista;
	for (int i = 1; i <= taulukkokoko; i++) {
		int b;
		cin >> b;
		lista.push_back(b);
	}

	if (taulukkokoko == sallittu) {
		cout << ((taulukkokoko*taulukkokoko) + taulukkokoko) / 2 << endl;
		return 0;
	}

	set<int> uniikit;
	map<int, int> montako; //Esim. 5 kolmosta on montako[3]=5
	long long ans = 0;
	int alku = -1; //Excl.
	int loppu = -1; //Incl.

	while (loppu < taulukkokoko-1) {
		loppu++;
		//cout << "ALKU ON " << alku << " JA LOPPU ON " << loppu << endl;
		uniikit.insert(lista[loppu]);
		montako[lista[loppu]]++;
		while (uniikit.size() > sallittu) {
			//cout << "PAKKO SIIRTAA ALKUA OIKEALLE" << endl;
			alku++;
			//cout << "ALUKSI JALJELLA ON " << montako[lista[alku]] << endl;
			montako[lista[alku]] -= 1;
			//cout << "JALJELLA ON " << montako[lista[alku]] << endl;
			if (montako[lista[alku]] == 0) {
				//cout << "PAASTIIN ERASEMAAN" << endl;
				uniikit.erase(lista[alku]);
			}
		}
		//cout << "SIIRTELYN JALKEEN ALKU ON " << alku << " JA LOPPU ON " << loppu << endl;
		ans += loppu - alku;
	}

	cout << ans;
	int q;
	cin >> q;
}