Pagini recente » Cod sursa (job #1747641) | Cod sursa (job #2392738) | Cod sursa (job #2572732) | Cod sursa (job #1922455) | Cod sursa (job #1149133)
#include<fstream>
//#include<cstdio>
//#include <cstdlib>
//#include <time.h>
using namespace std;
int v[3000001];
int poz;
ifstream f("sdo.in");
ofstream g("sdo.out");
inline void schimb(int a,int b){
int aux;
aux=v[a];
v[a]=v[b];
v[b]=aux;
}
int pozitie(int st,int dr){
int i=st,j=st;
while(i<dr){
if (v[i]<v[dr]){
schimb(i,j);
j++;
}
i++;
}
schimb(j,dr);
return j;
}
void med(int st,int dr){
if (st>=dr) return;
int p=pozitie(st,dr);
if (p==poz){
//printf ("%d",v[p]);
g<<v[p];
poz=-1;
return ;
}
if (p>poz) med(st,p-1);
else med(p+1,dr);
}
int main(){
//freopen ("sdo.in","r",stdin);
//freopen ("sdo.out","w",stdout);
int n,j;
int i;
//scanf ("%d%d",&n,&poz);
f>>n>>poz;
for(i=1;i<=n;i++)
f>>v[i];
//scanf ("%d",&v[i]);
//srand(time(NULL));
for(i=1;i<=n;i++){
j=((long long)i*v[i])%n+1;
//j = rand()%n + 1;
schimb(i,j);
}
med(1,n);
if (poz!=-1)
g<<v[poz];
//printf ("%d",v[poz]);
return 0;
}