/************************** Zadanie: Zapiekanki 2[B] Autor: Mateusz Dryjański **************************/ #include<iostream> using namespace std; string ToString(long long int l){ string P, S; do{ P+=l%10+48; l-=l%10; }while(l/=10); for(int i=P.length()-1;i>=0;i--)S+=P[i]; return S; } string Plus(string a, string b){ string w, m; if(a.length()>b.length()){ w=a; m=b; } else{ w=b; m=a; } int l=m.length()-1; for(int i=w.length()-1;i>=0;i--){ if(l>=0){ int x=w[i]-'0', y=m[l]-'0'; if(x+y<10)w[i]=(char)(x+y+48); else{int it=i; w[i]=(char)(((x+y)%10)+48); for(;;it--){ int n=w[it-1]-'0'; if(n+1<10 && n+1>=0){ w[it-1]=(char)(((w[it-1]-'0')+1)+48); break; } else{ if(it-1>=0){ w[it-1]=(char)(((n+1)%10)+48); } else { w=(char)(1+48)+w; break; } } } } l--; } } return w; } int main(){ int n, m; cin>>n>>m; long long int *klienci=new long long int[n]; long long int *piekarniki=new long long int[n]; for(int i=0;i<n;i++){ cin>>klienci[i]; } for(int i=0;i<m;i++){ cin>>piekarniki[i]; } string sum = "0"; for(int i=0;i<m;i++){ long long int poprzedni=0; sum="0"; long long int czasPieczenia=piekarniki[i]; long long int czas=0; //cout<<"Czas Pieczenia: "<<czasPieczenia<<endl; for(int j=0;j<n;j++){ if((czas+czasPieczenia) > klienci[j]){ string a = ToString(czas+czasPieczenia-klienci[j]); sum=Plus(sum, a); czas+=czasPieczenia; } else czas=klienci[j]; } cout<<sum<<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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | /************************** Zadanie: Zapiekanki 2[B] Autor: Mateusz Dryjański **************************/ #include<iostream> using namespace std; string ToString(long long int l){ string P, S; do{ P+=l%10+48; l-=l%10; }while(l/=10); for(int i=P.length()-1;i>=0;i--)S+=P[i]; return S; } string Plus(string a, string b){ string w, m; if(a.length()>b.length()){ w=a; m=b; } else{ w=b; m=a; } int l=m.length()-1; for(int i=w.length()-1;i>=0;i--){ if(l>=0){ int x=w[i]-'0', y=m[l]-'0'; if(x+y<10)w[i]=(char)(x+y+48); else{int it=i; w[i]=(char)(((x+y)%10)+48); for(;;it--){ int n=w[it-1]-'0'; if(n+1<10 && n+1>=0){ w[it-1]=(char)(((w[it-1]-'0')+1)+48); break; } else{ if(it-1>=0){ w[it-1]=(char)(((n+1)%10)+48); } else { w=(char)(1+48)+w; break; } } } } l--; } } return w; } int main(){ int n, m; cin>>n>>m; long long int *klienci=new long long int[n]; long long int *piekarniki=new long long int[n]; for(int i=0;i<n;i++){ cin>>klienci[i]; } for(int i=0;i<m;i++){ cin>>piekarniki[i]; } string sum = "0"; for(int i=0;i<m;i++){ long long int poprzedni=0; sum="0"; long long int czasPieczenia=piekarniki[i]; long long int czas=0; //cout<<"Czas Pieczenia: "<<czasPieczenia<<endl; for(int j=0;j<n;j++){ if((czas+czasPieczenia) > klienci[j]){ string a = ToString(czas+czasPieczenia-klienci[j]); sum=Plus(sum, a); czas+=czasPieczenia; } else czas=klienci[j]; } cout<<sum<<endl; } return 0; } |