Cerita
"2016? Al..baik," gerutu penjual mainan Hilbert. Dia membuka matanya, mengusap saus salad yang menetes dari telinganya dan makan cremeschnitte pagi yang baru dimulai. Teladan liburan. Dia perlu pergi bekerja sekarang, dan menyelesaikan akuntansi tahun ini.
Natal adalah periode yang sangat menguntungkan tahun ini, terutama untuk penjualannya. Hilbert tahu persis cara kerjanya: Seseorang datang ke toko dan membeli hadiah pertama yang mereka tawarkan. Mereka membayarnya dan lari ke toko lain. Dalam praktiknya, apa sebenarnya hadiah itu sebenarnya tidak membuat perbedaan. Harganya juga tidak relevan, asalkan tidak terlalu tinggi. Itu semua tergantung pada waktu yang tersisa sampai Natal - semakin pendek waktunya, semakin besar penyesalan pelanggan, semakin besar harga yang mereka bayarkan.
Yang diperlukan untuk Hilbert adalah melihat arlojinya - dan dia langsung tahu berapa banyak yang bisa dihabiskan pelanggannya. Dia dapat dengan mudah mengambil keuntungan dari fakta ini: Dia hanya menemukan hadiah paling mahal yang bisa dia jual kepada pelanggan tertentu, dan menawarkannya kepada mereka. Baru sekarang dia menyadari bahwa dia lupa menggunakan strategi licik ini tahun lalu. Itu akan berubah!
Namun demikian, Hilbert ingin tahu berapa banyak bisnisnya akan berkembang, jika dia benar-benar menggunakan skema besarnya. Dia berhasil mengumpulkan daftar orang-orang yang datang ke tokonya, tetapi dia tidak yakin berapa banyak uang yang dapat dia hasilkan dari mereka.
Tugas Anda (TL; DR)
Input terdiri dari ascending daftar harga hadiah yang tersedia, dan daftar anggaran pelanggan. Daftar anggaran berada dalam urutan yang sama seperti pelanggan datang ke toko - dengan syarat bahwa setiap pelanggan bersedia membayar setidaknya sebanyak yang sebelumnya, yang berarti juga naik.
Untuk setiap pelanggan, temukan hadiah termahal yang bersedia mereka bayar, dan berikan harga. Jika tidak ada hadiah dalam anggaran, output a 0.
Anda mendapatkan -40%bonus karakter, jika kompleksitas waktu asimptotik dari algoritma Anda O(n+m)(bukan sepele O(n*m)) Di mana n, mpanjang daftar input.
Ini adalah kode-golf , byte terpendek menang. Celah standar dilarang.
Contoh
Memasukkan:
1 2 2 2 5 7 10 20
1 1 2 3 6 6 15 21 21 22
Keluaran:
1 0 2 2 5 2 10 20 7 0
Tugas ini diambil dari kompetisi pemrograman lokal, dan diterjemahkan ke dalam bahasa Inggris oleh saya. Inilah tugas aslinya: https://www.ksp.sk/ulohy/zadania/1131/