const maxN = 111111;var i,n,c,j,count,cur : longint; a : array [1..maxN] of longint; l,r,m : longint; ans : longint;procedure swap(var w1,w2 : longint); var temp : longint; begin temp := w1; w1 := w2; w2 := temp; end;procedure qsort(left,right : longint); var i,j,key : longint; begin i := left; j := right; key := a[(i + j) shr 1]; repeat while (a < key) do inc(i); while (a[j] > key) do dec(j); if (i <= j) then begin swap(a,a[j]); inc(i); dec(j); end; until i>j; if (i < right) then qsort(i,right); if (j > left) then qsort(left,j); end;begin readln(n,c); for i := 1 to n do begin read(a); if a > r then r := a; end; qsort(1,n); while l < r do begin m := (l + r + 1) shr 1; count := 1; cur := a[1]; for i := 2 to n do if a - cur < m then continue else begin cur := a; inc(count); end; if count >= c then begin l := m; if count >= c then ans := m; end else begin r := m-1; end; end; writeln(ans);end.
>>137657590 (OP)2016 паскаль ахаха
Это запости свою лабу с первого курса тред? Ну го.Текст задания:Дан список идентификаторов. Длина каждого идентификатора не более 8 символов. Идентификаторы в списке расположены в лексикографическом порядке. Составить функции (подпрограммы) для следующих операций:a) удалить из списка все идентификаторы, совпадающие с заданным;б) удалить второй индификатор;в) удалить последний индефикатор. Текст программы: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #define MAXDL 9 /макс.длина ид-ра(строки символов с признаком конца '\0')/ struct el_sp / элемент списka / { char id [MAXDL]; / идентификатор / struct el_sp sled; / ссылка на следующий элемент / }; /-------------------------------------------------------------------------------/ / функция включения очередного идентификатора в список / /-------------------------------------------------------------------------------/ void vkl ( struct el_sp p, char t_id[] ) / Вх. данные: p - указатель списка идентификаторов в лексикографическом порядке, t_id - включаемый в список (текущий) ид-р / / Вых. данные: p / { struct el_sp pt, / указатель включаемого эл-та / k,j; / указатели очередного и предыдущего элементов списка / / выделение памяти для нового эл-та списка / pt=(struct el_sp )malloc(sizeof(struct el_sp)); strcpy(pt->id,t_id); if (p==NULL || strcmp(pt->id,(p)->id)<0) { / включение ид-ра в начало списка / pt->sled=p; p=pt; } else { / поиск элемента списка, после которого нужно включить идентификатор / k=p; while (k!=NULL && strcmp(pt->id,k->id)>=0) { j=k; k=k->sled; } / включение эл-та pt после элемента j / j->sled=pt; pt->sled=k; } } /-----------------------------------------------------------/ / Функции удаления / /-----------------------------------------------------------/ void del_sp ( struct el_sp p) //Функция удаления 2-го элемента { struct el_sp k; if (p==NULL || (p)->sled==NULL) return; k=(p)->sled; (p)->sled=k->sled; free(k); } void delp_sp ( struct el_sp p) //Функция удаления последнего элемента { struct el_sp k,j; j=p; if ((p)->sled==NULL) {(p)=NULL; free(j); } else { k=p; while(k->sled!=NULL) { j=k; k=k->sled; } j->sled=NULL; free(k); } } void del_sl(struct el_sp p, char sl[]) // Функция удаления заданного элемента { struct el_sp k,j=NULL; k=p; while(k!=NULL) { if (strcmp(sl,k->id)==0) { if (j==NULL) {(p)=k->sled; free(k); k=(p); } else { j->sled=k->sled; free(k); k=j->sled; } } else { j=k; k=k->sled; } } } /-----------------------------------------------------------/ / функция печати списка / /-----------------------------------------------------------/ void pech_sp ( struct el_sp p ) / Вх. данные: p - указатель начала списка / { struct el_sp i; / указатель текущего элемента списка / printf ("\nPE3YLTAT:\n"); for ( i=p; i!=NULL; i=i->sled ) puts (i->id); } /-----------------------------------------------------------/ / О С Н О В Н А Я П Р О Г Р А М М А / /-----------------------------------------------------------/ int main() { struct el_sp p; / указатель начала списка / unsigned n ; / количество идентификаторов / unsigned i ; / параметр цикла / char t_id[MAXDL], / текущий идентификатор / sl[MAXDL]; / удаляемый идентификатор / printf ("\nVvedite chislo slov\n n="); scanf ("%u",&n); getchar(); / пропуск символа "перевод строки" / p=NULL; / список пока пуст / printf ("Vvedite slova \n"); for ( i=1; i<=n; i++ ) { gets (t_id); vkl (&p,t_id); / включение ид-ра в список / } pech_sp (p); / печать списка */ printf("Vvedite ydalyaemoe slovo \n"); gets(sl); del_sl(&p,sl); pech_sp (p); del_sp (&p); pech_sp (p); delp_sp (&p); pech_sp (p); getch(); return 0; }
http://dropmefiles.com/IAuf8
>>137657973>printf ("Vvedite slova \n");Бля проиграл.>постить код на сайте, где нет разметки для негоДаун.>не знать о стилях кодированияДолбоеб.
>>137657590 (OP)Паскалебляди не человеки!Вот за такое for i := 1 to n do begin then begin нужно расстреливать!