#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string>
#include <fstream>
#include <time.h>
using namespace std;
#define nokr 20
#define nkom 5
#define nreg 4
ofstream out;
int tab[nokr][nkom],wyniki[nokr][nkom];
int wynReg[nreg][nkom],wynGlob[nkom];
string naz[nokr];
void fmandaty(int glosy[],int s[], int ilem, int ilek){
int i,j,indmax;
double x[nkom];
for(i=0;i<ilek;i++) {
s[i]=0; x[i]=1.0*glosy[i];
}
for(i=0;i<ilem;i++){
indmax=0;
for(j=1;j<ilek;j++){
if (x[j]>x[indmax]) {indmax=j;
}
s[indmax]++;
x[indmax]=glosy[indmax]/(2.0*s[indmax]+1);
}
}
}
void zad1(){
int i,j,tabsum[nokr];
for(i=0;i<nokr;i++) tabsum[i]=0;
for(i=0;i<nokr;i++)
for(j=0;j<nkom;j++)
tabsum[i]+= tab[i][j];
cout << "Zadanie 1: " << endl;
for(i=0;i<nokr;i++)
cout << naz[i] << ": " << tabsum[i] << endl;
}
void zad2(){
int i,j,maxnumer[nkom];
double akt,sum,maxproc[nkom];
for(i=0;i<nkom;i++) {
maxproc[i]=0.0; maxnumer[i]=0;
}
for(i=0;i<nokr;i++){
sum=0.0;
for(j=0;j<nkom;j++) sum+=tab[i][j];
for(j=0;j<nkom;j++){
akt=tab[i][j]/sum;
if (akt>maxproc[j]){
maxproc[j]=akt;
maxnumer[j]=i;
}
}
}
cout << "Zadanie 2: " << endl;
for(i=0;i<nkom;i++)
cout << "K" << i+1 << ": " << naz[maxnumer[i]] << endl;
}
void zad3(){
int i,j;
cout << "Zadanie 3: " << endl;
for(i=0;i<nokr;i++){
fmandaty(tab[i],wyniki[i], 20, 5);
}
int maxo[nkom];
for(i=0;i<nkom;i++) maxo[i]=0;
for(i=0;i<nokr;i++) {
for(j=0;j<nkom;j++){
if (wyniki[i][j]>maxo[j])
maxo[j]=wyniki[i][j];
}
}
for(i=0;i<nkom;i++)
cout << "K" << i+1<< ": " << maxo[i]<< endl;
}
void zad4(){
int i,j,k,pocz,tabR[nreg][nkom];
cout << "Zadanie 4: " << endl;
for(i=0;i<nreg;i++){
for(j=0;j<nkom;j++) tabR[i][j]=0;
pocz=i*5;
for(k=0;k<nkom;k++)
for(j=pocz;j<pocz+5;j++)
tabR[i][k]+=tab[j][k];
}
for(i=0;i<nreg;i++){
fmandaty(tabR[i],wynReg[i], 100, 5);
}
int sum[nkom], sumReg[nkom];
for(i=0;i<nkom;i++) {
sum[i]=sumReg[i]=0;
for(j=0;j<nokr;j++){
sum[i]+= wyniki[j][i];
}
for(j=0;j<nreg;j++){
sumReg[i]+= wynReg[j][i];
}
}
cout << "Standardowy: " << endl;
for(i=0;i<nkom;i++)
cout << "K" << i+1 <<": "<< sum[i]<<endl;
cout << "Regionalny: " << endl;
for(i=0;i<nkom;i++)
cout << "K" << i+1 <<": "<< sumReg[i]<<endl;
}
void zad5(){
int testin[nkom], testout[nkom];
int glosow=100000;
int mandatow=20;
int lmandatow[3]={20,40,100};
int i,j;
cout << "Zadanie 5: " << endl;
for(j=0;j<3;j++){
mandatow=lmandatow[j];
for(i=1;i<=glosow/2; i++){
testin[0]=i;
testin[1]=glosow-i;
fmandaty(testin,testout, mandatow, 2);
if (testout[0]==testout[1]){
cout << "Dla m="<< mandatow/2 <<": " << i << endl;
break;
}
}
}
}
int main(){
int i,j;
ifstream in;
in.open("dane_wybory.txt");
//out.open("wyniki_wybory.txt");
int ile = nokr;
for(i=0;i<ile;i++){
in >> naz[i];
for(j=0;j<5; j++){
in >> tab[i][j];
}
cout << endl;
}
zad1();
zad2();
zad3();
zad4();
zad5();
//out.close();
return 0;
}