Siema, robilem sobie zadanka na pocwiczenie ogolnej algorytmiki i utknalem w pewnym zadaniu. Moje podejscie wydaje sie byc dobre, natomist dostaje tylko 10%. Pomoze ktos w znalezieniu bledu?
https://szkopul.edu.pl/problemset/problem/5BwD26NEDhLd9c6ypF5zJfUt/site/?key=statement
#include <bits/stdc++.h>
using namespace std;
struct bin {
int wyg, prz;
};
bool f(bin a, bin b) {
return ((unsigned long long)a.wyg * (b.wyg + b.prz) >
(unsigned long long)b.wyg * (a.wyg + a.prz));
}
bin arr[10001];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, g;
cin >> n >> g;
for (int i = 1; i <= n; i ++)
cin >> arr[i].wyg >> arr[i].prz;
// sortuje wzgledem najwiekszego stosunku
// wygranych losow do wszystkich losow
sort(arr + 1, arr + n + 1, f);
/* for (int i = 1; i <= n; i ++)
cout << arr[i].wyg << ' ' << arr[i].prz << '\n'; */
unsigned long long los = 0;
for (int i = 1; i <= n; i ++) {
if (g == 0)
break;
if (arr[i].wyg > 0) {
los += (min(g, arr[i].wyg) + arr[i].prz);
g -= min(g, arr[i].wyg);
}
}
if (g == 0)
cout << los;
else
cout << "NIE";
}