Submission #447314

#TimeUsernameProblemLanguageResultExecution timeMemory
447314RichardDuyZigZag (COCI17_zigzag)C++14
80 / 80
58 ms6324 KiB
#include <bits/stdc++.h>

using namespace std;

typedef pair<int,string> ps;

priority_queue<ps, vector<ps>, greater<ps> > pq;

int n, k, c[26];
vector<string> oc[26];

int main()
{
//    freopen("doanchu.inp","r",stdin);
//    freopen("doanchu.out","w",stdout);
//    cin >> n >> k;
//    for (int i = 1; i <= n; i++){
//        string s;
//        cin >> s; pq.push({0,s});
//    }
//    for (int i = 1 ; i <= k ; i++){
//        char c;
//        cin >> c;
//        vector<ps> temp;
//        while(!pq.empty()){
//            if (pq.top().second[0]!=c) {temp.push_back(pq.top()); pq.pop();}
//            else{
//                string v = pq.top().second; int u = pq.top().first;
//                cout << v << endl;
//                pq.pop();
//                pq.push({u+1,v});
//                for (int i = 0; i < int(temp.size()); i++) pq.push(temp[i]);
//                temp.clear();
//                break;
//            }
//        }
//    }
//    return 0;
    ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n >> k;
	for (int i=0; i<n; ++i) {
		string s;
		cin >> s;
		oc[s[0]-'a'].push_back(s);
	}
	for (int i=0; i<26; ++i)
		sort(oc[i].begin(), oc[i].end());
	while(k--) {
		char a;
		cin >> a;
		int x=a-'a';
		cout << oc[x][c[x]] << "\n";
		c[x]=(c[x]+1)%oc[x].size();
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...