/**************************
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; } |
English