#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; } |
English