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