//ehh braklo czasu, może brutal dostanie jakis punkt :-)
#include<cstdio>
#include <algorithm>
int LiczbaTraw,LiczbaSkoszen;
int A[500100];
long long T[500100];
long long d,b;
long long popd=0;
inline bool f(int a,int b){return (a<b);}
inline bool f2(int i){return (i>b);}
main(){
scanf("%d%d",&LiczbaTraw,&LiczbaSkoszen);
for(int i=0;i<LiczbaTraw;i++)scanf("%d",A+i);
std::sort(A,A+LiczbaTraw,f);
popd=0;
for(int s=0;s<LiczbaSkoszen;s++){
//long long d,b;
scanf("%lld%lld",&d,&b);
for (int i=0;i<LiczbaTraw;i++)T[i]+=(long long)(d-popd)*A[i]; //rosniecie trawy
long long siano=0;
long long*wT=std::find_if(T,T+LiczbaTraw,f2);
for (int i=wT-T;i<LiczbaTraw;i++){siano+=T[i]-b,T[i]=b;}//koszenie
printf("%lld\n",siano);
popd=d;
}
}
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 | //ehh braklo czasu, może brutal dostanie jakis punkt :-) #include<cstdio> #include <algorithm> int LiczbaTraw,LiczbaSkoszen; int A[500100]; long long T[500100]; long long d,b; long long popd=0; inline bool f(int a,int b){return (a<b);} inline bool f2(int i){return (i>b);} main(){ scanf("%d%d",&LiczbaTraw,&LiczbaSkoszen); for(int i=0;i<LiczbaTraw;i++)scanf("%d",A+i); std::sort(A,A+LiczbaTraw,f); popd=0; for(int s=0;s<LiczbaSkoszen;s++){ //long long d,b; scanf("%lld%lld",&d,&b); for (int i=0;i<LiczbaTraw;i++)T[i]+=(long long)(d-popd)*A[i]; //rosniecie trawy long long siano=0; long long*wT=std::find_if(T,T+LiczbaTraw,f2); for (int i=wT-T;i<LiczbaTraw;i++){siano+=T[i]-b,T[i]=b;}//koszenie printf("%lld\n",siano); popd=d; } } |
English