Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <algorithm>
- #include <vector>
- using namespace std;
- ifstream fin ("colibri.in");
- ofstream fout ("colibri.out");
- const int nMAX = 50e3;
- vector<pair<int, double>> poz;
- vector<pair<int, double>> neg;
- int nul = 0; /// pozitia unui element nul
- bool sol[nMAX + 1];
- int a[nMAX + 1], b[nMAX + 1], c[nMAX + 1];
- bool cmpless(const pair<int, double> &a, const pair<int, double> &b)
- { return (a.second < b.second); }
- bool cmpgreater(const pair<int, double> &a, const pair<int, double> &b)
- { return (a.second > b.second); }
- int main()
- {
- int n, i;
- fin >> n;
- for (i = 1; i <= n; ++i)
- {
- fin >> a[i] >> b[i] >> c[i];
- if (b[i] == 0)
- nul = i;
- else if (a[i] % 2 == 0)
- poz.emplace_back(i, 1.*b[i]/c[i]);
- else if (a[i] % 2 == 1)
- neg.emplace_back(i, -1.*b[i]/c[i]);
- }
- sort(poz.begin(), poz.end(), cmpgreater); // 9, 4.2, 0.6
- sort(neg.begin(), neg.end(), cmpless); // -6.9, -4, -2
- bool solu = 0;
- /// punem toate numerele pozitive mai mari sau egale cu 1.
- for (i = 0; i < poz.size() && poz[i].second >= 1; ++i)
- sol[poz[i].first] = 1,
- solu = 1;
- /// punem perechi de cate 2 numere negative pana cand ..
- for (i = 1; i < neg.size() && neg[i-1].second*neg[i].second >= 1; i += 2)
- sol[neg[i-1].first] = sol[neg[i].first] = 1,
- solu = 1;
- /// problema este ca cele doua for-uri de mai sus s-ar putea sa nu gaseasca nicio solutie.
- if (solu == 0)
- {
- if (poz.size() >= 1 && neg.size() >= 2)
- if (poz[0].second > neg[0].second * neg[1].second)
- sol[poz[0].first] = 1;
- else
- sol[neg[0].first] = sol[neg[1].first] = 1;
- if (poz.size() >= 1 && neg.size() <= 1)
- sol[poz[0].first] = 1;
- if (poz.size() == 0 && neg.size() >= 2)
- sol[neg[0].first] = sol[neg[1].first] = 1;
- if (poz.size() == 0 && neg.size() <= 1)
- if (nul != 0)
- sol[nul] = 1;
- else
- sol[neg[0].first] = 1;
- }
- for (i = 1; i <= n; ++i)
- fout << sol[i];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement