All pastes #247700 Raw Edit

yac - P-I-1 Pizza kolem

public cpp v1 · immutable
#247700 ·published 2006-11-13 20:01 UTC
rendered paste body
/* P-I-1 Pizza kolem * Jakub Ruzicka * ctete pizza.txt */#include <iostream>#include <fstream>using namespace std;int main ( int argc, char *argv[] ){// vstupni a vystupni soubory...ifstream vstup("pizza.in");ofstream vystup("pizza.out");// nacteni poctu objednavek, jak jinak...int pocet;if(!(vstup >> pocet)) {  cerr << "Chyba na vstupu (pocet objednavek)\n";  exit(EXIT_FAILURE); }// mocne pole, ktere obsahuje pocet kousku danne velikosti v sestinach - 0 je// pochopitelne pocet celych pizz.int dilky[6] = {0,0,0,0,0,0};// nacteni jednotlivych casti pizzy... celky budou nemilosrdne osekany.for(int a=0;a<pocet;a++) {  int dilek;  if(!((vstup >> dilek) && (dilek > 0))  ){    cerr << "Chyba na vstupu (objednavka c." << (a+1) << ")\n";    exit(EXIT_FAILURE);   }  dilky[0] += dilek/6;  if(dilek%6) dilky[dilek%6]++; }// mame nacteno, hura na spojeni 1+5, 2+4 a 3+3 sestin...// kvuli dvema vyskytum psat fci je zbytecne, jde nam prece o rychlost.while(dilky[1] && dilky[5]) { // 1+5=6  dilky[1]--; dilky[5]--;  dilky[0]++; }while(dilky[2] && dilky[4]) { // 2+4=6  dilky[2]--; dilky[4]--;  dilky[0]++; }while(dilky[3]>=2) {  dilky[3]-=2;  dilky[0]++; }// nic na svete neni dokonale, takze nam zrejme nejake nezbedne dilky zbyly... takze// pujdeme od nejmensich a pokusime se k nim pridavat od nejvetsich tak, aby byly// vytvoreny co nejvetsi celky a Marco se neprejedl zbytky...for(int a=1;a<=5;a++)  while(dilky[a]) {    int d;    for(d=6-a;(!dilky[d] && (d >= 1));d--) {};      d++;      if(!dilky[d]) { // nenasli jsme dalsi vhodny dilek - neco holt zbyde...        dilky[a]--;        dilky[0]++;       } else { // secteme nalezene dilky        dilky[a]--; dilky[d]--;        dilky[a+d]++;       }   }// pokud vse slo dobre (samozrejme ze slo), v poli dilky je na pozici 0 pocet// potrebnych pizz. Tak ho zapisme/ukazme !vystup << dilky[0] << endl;vystup.close(); vstup.close();return EXIT_SUCCESS;}