#include <stdio.h>
#include <math.h>
#include <inttypes.h>
#include <stdlib.h>
#include <x86intrin.h>
#include <limits.h>
const int N=1024*256;
int ner (int *a, int *b){return *a - *b;}
long long te_1(int N){
int* volatile arr
=malloc(sizeof(int)*N
); for (int i=0;i<N;i++)
arr[i]=i*i*i*i;
long long t1,t2;
t1=_rdtsc();
qsort(arr
, N
, sizeof(int), (void*)ner
); t2=_rdtsc();
return (t2-t1);
}
long long te_2(int N){
int* volatile arr
=malloc(sizeof(int)*N
); for (int i=0;i<N;i++)
arr[i]=i*i*i*i;
long long t1,t2;
long long m=0,e;
t1=_rdtsc();
for (int i=0;i<N;i++)
for (int j=i+1;j<N;j++){
if (e>m) m=e;
}
t2=_rdtsc();
return (t2-t1);
}
int main(){
printf("\n sizeof(size_t): %d\n\n",(int)sizeof(size_t)); printf(" === Sortirovka :3 === \n"); for (int o=0;o<3;o++){
int mm[]={10,100,1000,10000,100000,1000000};
for (int i=0;i<sizeof(mm)/sizeof(*mm);i++)
printf(" %11d: %-11lld\n",mm
[i
],te_1
(mm
[i
])); }
printf(" === pari :2 === \n"); for (int o=0;o<3;o++){
int mm[]={31, 100, 316, 1000, 3162, 10000, 31622};
for (int i=0;i<sizeof(mm)/sizeof(*mm);i++)
printf(" %11d: %-11lld\n",mm
[i
],te_2
(mm
[i
])); }
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KCiNpbmNsdWRlIDxsaW1pdHMuaD4KCmNvbnN0IGludCBOPTEwMjQqMjU2OwppbnQgbmVyIChpbnQgKmEsIGludCAqYil7cmV0dXJuICphIC0gKmI7fQoKbG9uZyBsb25nIHRlXzEoaW50IE4pewogICBpbnQqIHZvbGF0aWxlIGFycj1tYWxsb2Moc2l6ZW9mKGludCkqTik7CiAgIGZvciAoaW50IGk9MDtpPE47aSsrKQogICAgICBhcnJbaV09aSppKmkqaTsKCiAgIGxvbmcgbG9uZyB0MSx0MjsKICAgdDE9X3JkdHNjKCk7CiAgIHFzb3J0KGFyciwgTiwgc2l6ZW9mKGludCksICh2b2lkKiluZXIpOwogICB0Mj1fcmR0c2MoKTsKCiAgIGZyZWUoYXJyKTsKICAgcmV0dXJuICh0Mi10MSk7Cn0KCmxvbmcgbG9uZyB0ZV8yKGludCBOKXsKICAgIGludCogdm9sYXRpbGUgYXJyPW1hbGxvYyhzaXplb2YoaW50KSpOKTsKICAgZm9yIChpbnQgaT0wO2k8TjtpKyspCiAgICAgIGFycltpXT1pKmkqaSppOwoKICAgbG9uZyBsb25nIHQxLHQyOwogICBsb25nIGxvbmcgbT0wLGU7CiAgIHQxPV9yZHRzYygpOwogICBmb3IgKGludCBpPTA7aTxOO2krKykKICAgICAgZm9yIChpbnQgaj1pKzE7ajxOO2orKyl7CiAgICAgICAgIGU9YWJzKGFycltqXS1hcnJbaV0pOwogICAgICAgICBpZiAoZT5tKSBtPWU7CiAgICAgIH0KICAgdDI9X3JkdHNjKCk7CiAgIGZyZWUoYXJyKTsKICAgcmV0dXJuICh0Mi10MSk7Cn0KCgppbnQgbWFpbigpewogICBwcmludGYoIlxuIHNpemVvZihzaXplX3QpOiAlZFxuXG4iLChpbnQpc2l6ZW9mKHNpemVfdCkpOwogICBwcmludGYoIiAgICAgICAgPT09ICBTb3J0aXJvdmthIDozICA9PT0gXG4iKTsKICAgZm9yIChpbnQgbz0wO288MztvKyspewogICAgICBpbnQgbW1bXT17MTAsMTAwLDEwMDAsMTAwMDAsMTAwMDAwLDEwMDAwMDB9OwogICAgICBmb3IgKGludCBpPTA7aTxzaXplb2YobW0pL3NpemVvZigqbW0pO2krKykKICAgICAgICAgcHJpbnRmKCIgJTExZDogJS0xMWxsZFxuIixtbVtpXSx0ZV8xKG1tW2ldKSk7CiAgICAgIHByaW50ZigiIFxuIik7CiAgIH0KICAgcHJpbnRmKCIgICAgICAgID09PSAgcGFyaSA6MiAgPT09IFxuIik7CiAgIGZvciAoaW50IG89MDtvPDM7bysrKXsKICAgICAgaW50IG1tW109ezMxLCAxMDAsIDMxNiwgMTAwMCwgMzE2MiwgMTAwMDAsIDMxNjIyfTsKICAgICAgZm9yIChpbnQgaT0wO2k8c2l6ZW9mKG1tKS9zaXplb2YoKm1tKTtpKyspCiAgICAgICAgIHByaW50ZigiICUxMWQ6ICUtMTFsbGRcbiIsbW1baV0sdGVfMihtbVtpXSkpOwogICAgICBwcmludGYoIiBcbiIpOwogICB9CiAgIHN5c3RlbSgicGF1c2UiKTsKfQo=