Open dz0 opened 9 years ago
// galima ir lakoniškiau #include <iostream> #include <fstream> #include <iomanip> #include <string> #include <cmath> using namespace std; struct krepsininkas{ int nr; int t; //zaisti arba ilsetiesi laikai int time[40]; }; int n; void read(struct krepsininkas *kr[]){ ifstream duomenys ("U1.txt"); duomenys>>n; for (int i=0; i<n; i++){ duomenys>>kr[i]->nr>>kr[i]->t; for(int j=0; j<(kr[i]->t); j++){ duomenys>>kr[i]->time[j]; } } duomenys.close(); } void penketas (struct krepsininkas kr[], int n, int stpenketas[]){ int m=0; for(int i=0; i<n; i++){ if(kr[i].time[0]>0){ stpenketas[m]=kr[i].nr; m++; } } int tmp; for(int i=0; i<5; i++){ for(int j=i+1; j<5; j++){ if(stpenketas[i]>stpenketas[j]){ tmp=stpenketas[j]; stpenketas[j]=stpenketas[i]; stpenketas[i]=tmp; } } } } void play(struct krepsininkas kr[], int zaide[], int n){ int tm; for(int i=0; i<n; i++){ tm=kr[i].t; for(int j=0; j<tm; j++){ if( (kr[i].time[j])>0 ){ zaide[i]=zaide[i]+kr[i].time[j]; } } } } void sit(struct krepsininkas kr[], int sedejo[], int n){ int tm; for(int i=0; i<n; i++){ tm=kr[i].t; for(int j=0; j<tm; j++){ if( (kr[i].time[j])<0 ){ sedejo[i]=sedejo[i]-kr[i].time[j]; } } } } int maksimalus(int a[], struct krepsininkas kr[]){ int indeksas, maks=0;; for(int i=0; i<n; i++){ if(maks<a[i]){ indeksas=i; maks=a[i]; } else if(maks==a[i] && kr[indeksas].nr>kr[i].nr){ indeksas=i; } } return indeksas; } int main(){ //ifstream duomenys ("U1.txt"); ofstream rezultatai("U1rez.txt"); int zaide[12],sedejo[12], stpenketas[5]; //pretty obvious kintamieji for(int i=0; i<12; i++){ zaide[i]=0; sedejo[i]=0; } struct krepsininkas kr[12], *pkr[12]; //strukturu masyvas ir pointeris i sio tipo struktura for(int i=0; i<12; i++){ //cikliukas kuris i pointeriu masyva susiraso strukturu adresus pkr[i]=&kr[i]; } read(pkr); penketas(kr, n, stpenketas); for(int i=0; i<5;i++){ rezultatai<<stpenketas[i]<<" "; } rezultatai<<endl; play(kr, zaide, n); sit(kr, sedejo, n); int indeksas; indeksas=maksimalus(zaide, kr); rezultatai<<kr[indeksas].nr<<" "<<zaide[indeksas]<<endl; indeksas=maksimalus(sedejo, kr); rezultatai<<kr[indeksas].nr<<" "<<sedejo[indeksas]<<endl; rezultatai.close(); return 0; }