#include <iostream> #include <vector> #include <utility> #include <cmath> using namespace std; typedef pair<int, int> pa; int vs(pa x, pa y, pa z) {//vektorový súčin return (z.first-x.first)*(z.second-y.second) -(z.first-y.first)*(z.second-x.second); } int main() { cout<<"Celkový počet gólov: "; int n; cin>>n; if (!n) { cout<<"Index napínavosti: 0"; return 0; } cout<<"Zadaj postupne góly - 0 prvé mužstvo, 1 druhé mužstvo: "; vector<pa> x; x.push_back(pa(0, 0)); vector<int> y(1, 0); for (int i=1; i<=n; i++) { bool c; cin>>c; x.push_back(pa(x[i-1].first+!c, x[i-1].second+c)); //horný konvexný obal while (y.size()>=2 && vs(x[y[y.size()-2]], x[y.back()], x[i])<0) y.pop_back(); y.push_back(i); } double s=0; for (unsigned i=0; i+1<y.size(); i++) s+=vs(x[y[i]], x[y[i+1]], x[0]); y.clear(); for (int i=n; i>=0; i--) {//dolný konvexný obal while (y.size()>=2 && vs(x[y[y.size()-2]], x[y.back()], x[i])<0) y.pop_back(); y.push_back(i); } for (unsigned i=0; i+1<y.size(); i++) s+=vs(x[y[i]], x[y[i+1]], x[0]); cout<<"Index napínavosti: "<< (s/2)/((x[n].first*x[n].first) >? (x[n].second*x[n].second)) << endl; cout<<"Index napínavosti finále MS 2002 Slovensko - Rusko: 0.3125." << endl; }