#include<cstdio> #include<algorithm> using namespace std; int klienci, piekarniki; int klient[200005]; int piekarnik[1000005]; int najwolniejszy; long long int suma; int ileczasow[1000005]; int odejmowanie; long long int wynik[1000005]; // wynik dla piekarnikow o szybkosci x int main() { scanf("%d%d",&klienci,&piekarniki); for(int i=1; i<=klienci; i++) scanf("%d",&klient[i]); for(int i=1; i<=piekarniki; i++) { scanf("%d",&piekarnik[i]); najwolniejszy = max(najwolniejszy, piekarnik[i]); } for(int i=1; i<=klienci; i++) { int czas = najwolniejszy - (klient[i] - klient[i-1]); if(czas > 0) { suma += czas; ileczasow[czas]++; odejmowanie++; } } //printf("(%lld)(%d)",suma,odejmowanie); wynik[najwolniejszy] = suma; for(int i=najwolniejszy-1; i>=1; i--) { suma -= odejmowanie; wynik[i] = suma; odejmowanie -= ileczasow[najwolniejszy-i]; } for(int i=1; i<=piekarniki; i++) printf("%lld\n",wynik[piekarnik[i]]); 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 | #include<cstdio> #include<algorithm> using namespace std; int klienci, piekarniki; int klient[200005]; int piekarnik[1000005]; int najwolniejszy; long long int suma; int ileczasow[1000005]; int odejmowanie; long long int wynik[1000005]; // wynik dla piekarnikow o szybkosci x int main() { scanf("%d%d",&klienci,&piekarniki); for(int i=1; i<=klienci; i++) scanf("%d",&klient[i]); for(int i=1; i<=piekarniki; i++) { scanf("%d",&piekarnik[i]); najwolniejszy = max(najwolniejszy, piekarnik[i]); } for(int i=1; i<=klienci; i++) { int czas = najwolniejszy - (klient[i] - klient[i-1]); if(czas > 0) { suma += czas; ileczasow[czas]++; odejmowanie++; } } //printf("(%lld)(%d)",suma,odejmowanie); wynik[najwolniejszy] = suma; for(int i=najwolniejszy-1; i>=1; i--) { suma -= odejmowanie; wynik[i] = suma; odejmowanie -= ileczasow[najwolniejszy-i]; } for(int i=1; i<=piekarniki; i++) printf("%lld\n",wynik[piekarnik[i]]); return 0; } |