#include <cstdio> #include <algorithm> using namespace std; inline void putUI( unsigned long long int n) { if(n>0) { putUI(n/10); putc_unlocked(n%10+48,stdout); } } inline void readUI(int *w) { register char c = 0; while (c < 33) c=getc_unlocked(stdin); (*w) = 0; while (c>32) {(*w)=(*w)*10LL + (c-48); c=getc_unlocked(stdin);} } inline void read(unsigned long long int *z) { register char c = 0; while (c < 33) c=getc_unlocked(stdin); (*z) = 0; while (c>32) {(*z)=(*z)*10LL + (c-48); c=getc_unlocked(stdin);} } int a,b,c,d; int main() { int a=0,b=0,c=0,d=0; unsigned long long int skoszenia; int gatunki; int ilosc_skoszen; unsigned long long int dni=1,dzien=1; unsigned long long int dni_koszen; unsigned long long int suma=0; readUI(&gatunki); readUI(&ilosc_skoszen); int tab[gatunki]; unsigned long long int trawa[gatunki] ; for(a=0;a<gatunki;a++) readUI(&tab[a]); sort(tab,tab+gatunki); for(c=0;c<gatunki;c++) trawa[c]=tab[c]; while(ilosc_skoszen--) { suma=0; read(&dni_koszen); read(&skoszenia); dni=dni_koszen-dzien; dzien=dni_koszen; for(b=0;b<gatunki;b++) { trawa[b]+=tab[b]*dni; } for(d=0;d<gatunki;d++) { if(trawa[d]>skoszenia) { suma+=trawa[d]-skoszenia; trawa[d]=skoszenia; } } printf("%llu\n",suma); } 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 | #include <cstdio> #include <algorithm> using namespace std; inline void putUI( unsigned long long int n) { if(n>0) { putUI(n/10); putc_unlocked(n%10+48,stdout); } } inline void readUI(int *w) { register char c = 0; while (c < 33) c=getc_unlocked(stdin); (*w) = 0; while (c>32) {(*w)=(*w)*10LL + (c-48); c=getc_unlocked(stdin);} } inline void read(unsigned long long int *z) { register char c = 0; while (c < 33) c=getc_unlocked(stdin); (*z) = 0; while (c>32) {(*z)=(*z)*10LL + (c-48); c=getc_unlocked(stdin);} } int a,b,c,d; int main() { int a=0,b=0,c=0,d=0; unsigned long long int skoszenia; int gatunki; int ilosc_skoszen; unsigned long long int dni=1,dzien=1; unsigned long long int dni_koszen; unsigned long long int suma=0; readUI(&gatunki); readUI(&ilosc_skoszen); int tab[gatunki]; unsigned long long int trawa[gatunki] ; for(a=0;a<gatunki;a++) readUI(&tab[a]); sort(tab,tab+gatunki); for(c=0;c<gatunki;c++) trawa[c]=tab[c]; while(ilosc_skoszen--) { suma=0; read(&dni_koszen); read(&skoszenia); dni=dni_koszen-dzien; dzien=dni_koszen; for(b=0;b<gatunki;b++) { trawa[b]+=tab[b]*dni; } for(d=0;d<gatunki;d++) { if(trawa[d]>skoszenia) { suma+=trawa[d]-skoszenia; trawa[d]=skoszenia; } } printf("%llu\n",suma); } return 0; } |