답안 #920073

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
920073 2024-02-02T03:17:16 Z Faisal_Saqib Lottery (CEOI18_lot) C++17
컴파일 오류
0 ms 0 KB
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
const int N=1e4+1;
int a[N],l,n;
bool posa=0;
map<int,int> ans[N];
vector<vector<int>> hp;
void level_up()
{
	if(posa)
		return;
	for(int i=0;i<(n-l+1);i++)
	{
		for(int j=i+1;j<(n-l+1);j++)
		{
			int c=0;
			for(int dl=0;dl<l;dl++)
			{
				c+=(hp[i][dl]!=hp[j][dl]);
			}
			ans[i][c]++;
			ans[j][c]++;
		}
	}
	posa=1;
}
int main()
{
	cin>>n>>l;
	for(int i=0;i<n;i++)
		cin>>a[i];		
	int q;
	cin>>q;
	if(q==1)
	{
		int k;
		cin>>k;
		if(k==0)
		{
			// using Trie;
			map<vector<int>,int> cnt;
			for(int i=0;(i+l-1)<n;i++)
			{
				vector<int> ap;
				for(int j=0;j<l;j++)
					ap.push_back(a[i+j]);
				cnt[ap]++;
			}
			for(int i=0;(i+l-1)<n;i++)
			{
				vector<int> ap;
				for(int j=0;j<l;j++)
					ap.push_back(a[i+j]);
				cout<<cnt[ap]--1<<' ';
			}
			cout<<'\n';
		}
		else
		{
			for(int i=0;(i+l-1)<n;i++)
			{
				vector<int> ap;
				for(int j=0;j<l;j++)
					ap.push_back(a[i+j]);
				hp.push_back(ap);
			}
			level_up();
			for(int i=0;(i+l-1)<n;i++)
			{
				int sp=0;
				for(int lp=0;lp<=k;lp++)
					if(ans[i].find(lp)!=ans[i].end())
						sp+=ans[i][lp];
				cout<<sp<<' ';
			}
			cout<<'\n';
		}
	}
	else
	{
		for(int i=0;(i+l-1)<n;i++)
		{
			vector<int> ap;
			for(int j=0;j<l;j++)
				ap.push_back(a[i+j]);
			hp.push_back(ap);
		}
		level_up();
		while(q--)
		{
			int k;
			cin>>k;
			for(int i=0;(i+l-1)<n;i++)
			{
				int sp=0;
				for(int lp=0;lp<=k;lp++)
					if(ans[i].find(lp)!=ans[i].end())
						sp+=ans[i][lp];
				cout<<sp<<' ';
			}
			cout<<'\n';
		}
	}
	return 0;
}

Compilation message

lot.cpp: In function 'int main()':
lot.cpp:57:20: error: expected ';' before numeric constant
   57 |     cout<<cnt[ap]--1<<' ';
      |                    ^
      |                    ;