제출 #920045

#제출 시각아이디문제언어결과실행 시간메모리
920045Faisal_SaqibLottery (CEOI18_lot)C++17
45 / 100
3038 ms11012 KiB
#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; } struct Node{ Node *child[N]; int cnt1=0; }; Node* root=new Node(); void insert(vector<int>& a) { Node* cur=root; for(int i=0;i<l;i++) { if(cur->child[a[i]]==NULL) cur->child[a[i]]=new Node(); cur=cur->child[a[i]]; cur->cnt1++; } } int query(vector<int>& a) { Node* cur=root; for(int i=0;i<l;i++) cur=cur->child[a[i]]; return cur->cnt1-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; 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]); insert(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<<query(ap)<<' '; } 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; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...