Module: Karşılaştırıcı ile sıralama


Problem

11/11

Pamuk Prenses ve N Cüceler

Problem

"Eh, cüceler değil, ama bir tür ceza!", – diye düşündü Pamuk Prenses, bir kez daha cüceleri uyutmaya çalışarak. Birini bırakacaksın – diğeri zaten uyanık! Ve böylece bütün gece.
 
Pamuk Prenses'in n tane cücesi var ve hepsi çok farklı. i-inci cüceyi uyutmanın bir dakika sürdüğünü ve bundan sonra tam olarak iki dakika uyuyacağını biliyor. Pamuk Prenses'in tüm cüceler uyurken en az bir dakika dinlenip dinlenemeyeceğini ve öyleyse cüceleri hangi sırayla uyutacağını öğrenmesine yardım edin.
 
Örneğin, sadece iki cüce olduğunu varsayalım, a1 = 1, b1 = 10, a2 = 10, b2 = 20. Pamuk Prenses ilk cüceyi yatırmaya başlarsa, ikinciyi yatırması 10 dakika sürer. biri yatacak ve bu süre zarfında ilki uyanacak. İkinci cüceyle başlarsa ilkini yatağa yatıracak ve 10 dakika dinlenecek zamanı olacak.
 
Giriş verileri
Girdi dosyasının ilk satırı n sayısını (1 <= n <= 10000), ikinci satırı a1,a2,… bir, üçüncü – sayılar b1,b2,… milyar (1 <= ai, bi <= 100000).
 
Çıktı
Çıktı dosyasına n sayıda yazdırın – cüceleri yatağa koyma sırası. Pamuk Prenses dinlenemezse, -1 sayısını yazdırın.

(c) Grigoriev E., 2018
Gir Çıktı
2
1 10
10 20
2 1
Write the program below
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
const int N = 1e5 + 5;

struct dwarf {
    int a, b, i;
    dwarf() {}
    dwarf(int _a, int _i) {
        this->a = _a;
        this->i = _i;
    }
};

int n;
int k;
int c;
vector<dwarf>dwarfs(N);

bool cmp(dwarf a, dwarf b) {   
}

int main() {
    cin >> n;
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        k += x;
        dwarfs.at(i) = dwarf(x, i + 1);
    }

    for (int i = 0; i < n; i++) {
        cin >> dwarfs.at(i).b;
        if (dwarfs.at(i).b - (k - dwarfs.at(i).a) <= 0)
            c++;
    }

    if (c == n) {
        cout << -1;
        return 0;
    }

    sort(dwarfs.begin(), dwarfs.end(), cmp);

    for (int i = 0; i < n; i++)
        cout << dwarfs.at(i).i << " ";

    return 0;
}   

     

Program check result

To check the solution of the problem, you need to register or log in!