Submission #373587

# Submission time Handle Problem Language Result Execution time Memory
373587 2021-03-05T07:29:08 Z Atill83 ZigZag (COCI17_zigzag) C++14
80 / 80
178 ms 13060 KB
#include <bits/stdc++.h>
#define ff first
#define ss second
#define endl '\n'
using namespace std;
const long long INF = (long long) 1e18;
const int mod = (int) 1e9+7;
const int MAXN = (int) 1e5+5;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
ll n, k;
string arr[MAXN];

struct op {
    bool operator () (pii a, pii b){
        if(a.ff != b.ff)
            return a.ff < b.ff;
        return arr[a.ss] < arr[b.ss];
    };
};

set<pii, op> num[26];
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);cout.tie(nullptr);

    #ifdef Local
        freopen("C:/Users/Admin/Desktop/Yazilim/C/IO/int.txt","r",stdin);
        freopen("C:/Users/Admin/Desktop/Yazilim/C/IO/out.txt","w",stdout);
    #endif


    cin>>k>>n;
    for(int i = 0; i < k; i++){
        cin>>arr[i];
        num[arr[i][0] - 'a'].insert({0, i});
    }


    for(int i = 0; i < n; i++){
        char c;
        cin>>c;
        int idx = c - 'a';
        pii u = *num[idx].begin();
        num[idx].erase(num[idx].begin());
        cout<<arr[u.ss]<<endl;
        num[idx].insert({u.ff + 1, u.ss});
    }



    #ifdef Local
        cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds ";
    #endif
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3436 KB Output is correct
2 Correct 2 ms 3436 KB Output is correct
3 Correct 3 ms 3564 KB Output is correct
4 Correct 4 ms 3564 KB Output is correct
5 Correct 3 ms 3564 KB Output is correct
6 Correct 3 ms 3564 KB Output is correct
7 Correct 176 ms 13036 KB Output is correct
8 Correct 178 ms 13000 KB Output is correct
9 Correct 172 ms 13036 KB Output is correct
10 Correct 169 ms 13060 KB Output is correct