#include "message.h" #include "kanapka.h" #include <algorithm> #include <iostream> using namespace std; const int lInstancji = NumberOfNodes(); const int idInstancji = MyNodeId(); const long long dKanapki = GetN(); int main() { long long poczatek = (long long)(idInstancji * dKanapki / lInstancji); long long koniec = (long long)((idInstancji+1) * dKanapki / lInstancji); long long suma = 0, najmniejszyWSrodku = 0; long long najmniejszyKoniec = 0, najmniejszyPoczatek = 0; for (long long i = poczatek; i < koniec; ++i) { long long smak = GetTaste(i); suma += smak; najmniejszyKoniec += smak; if (najmniejszyKoniec > 0) najmniejszyKoniec = 0; najmniejszyWSrodku = min(najmniejszyWSrodku, najmniejszyKoniec); } for (long long i = koniec-1; i>= poczatek; --i) { long long smak = GetTaste(i); najmniejszyPoczatek += smak; if (najmniejszyPoczatek > 0) najmniejszyPoczatek = 0; } PutLL(0, suma); PutLL(0, najmniejszyWSrodku); PutLL(0, najmniejszyKoniec); PutLL(0, najmniejszyPoczatek); Send(0); if (idInstancji == 0){ long long wSumie = 0, czescKanapki = 0, czescKanapkiPom = 0; for (int i = 0; i<lInstancji; i++){ Receive(i); suma = GetLL(i); najmniejszyWSrodku = GetLL(i); najmniejszyKoniec = GetLL(i); najmniejszyPoczatek = GetLL(i); czescKanapki = min(czescKanapki, czescKanapkiPom + najmniejszyPoczatek); czescKanapkiPom += suma; czescKanapkiPom = min(czescKanapkiPom, najmniejszyKoniec); czescKanapki = min(czescKanapki, najmniejszyWSrodku); wSumie += suma; } cout << (wSumie - czescKanapki) << endl; } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include "message.h" #include "kanapka.h" #include <algorithm> #include <iostream> using namespace std; const int lInstancji = NumberOfNodes(); const int idInstancji = MyNodeId(); const long long dKanapki = GetN(); int main() { long long poczatek = (long long)(idInstancji * dKanapki / lInstancji); long long koniec = (long long)((idInstancji+1) * dKanapki / lInstancji); long long suma = 0, najmniejszyWSrodku = 0; long long najmniejszyKoniec = 0, najmniejszyPoczatek = 0; for (long long i = poczatek; i < koniec; ++i) { long long smak = GetTaste(i); suma += smak; najmniejszyKoniec += smak; if (najmniejszyKoniec > 0) najmniejszyKoniec = 0; najmniejszyWSrodku = min(najmniejszyWSrodku, najmniejszyKoniec); } for (long long i = koniec-1; i>= poczatek; --i) { long long smak = GetTaste(i); najmniejszyPoczatek += smak; if (najmniejszyPoczatek > 0) najmniejszyPoczatek = 0; } PutLL(0, suma); PutLL(0, najmniejszyWSrodku); PutLL(0, najmniejszyKoniec); PutLL(0, najmniejszyPoczatek); Send(0); if (idInstancji == 0){ long long wSumie = 0, czescKanapki = 0, czescKanapkiPom = 0; for (int i = 0; i<lInstancji; i++){ Receive(i); suma = GetLL(i); najmniejszyWSrodku = GetLL(i); najmniejszyKoniec = GetLL(i); najmniejszyPoczatek = GetLL(i); czescKanapki = min(czescKanapki, czescKanapkiPom + najmniejszyPoczatek); czescKanapkiPom += suma; czescKanapkiPom = min(czescKanapkiPom, najmniejszyKoniec); czescKanapki = min(czescKanapki, najmniejszyWSrodku); wSumie += suma; } cout << (wSumie - czescKanapki) << endl; } return 0; } |