Pagini recente » Cod sursa (job #2123141) | Cod sursa (job #2758869) | Cod sursa (job #109760) | Cod sursa (job #1886679) | Cod sursa (job #1153712)
#include<fstream>
#include<algorithm>
#include<vector>
#define INF (1<<27)
using namespace std;
struct Elem{int coloana;int contor;}Culorii[130];
vector <int> aparitiiC[130],aparitiiL[130];
int N,M,Maxim=INF,sol;
bool cmp(int i,int j) {
return (i<j);
}
void citire() {
ifstream in("trecere.in");
int i,x,j;
in>>M>>N;
for(i=0;i<N;i++)
for(j=0;j<N;j++) {
in>>x;
aparitiiL[x].push_back(i);
aparitiiC[x].push_back(j);
}
in.close();
}
void solve() {
int i,j;
for(i=1;i<=N;i++) {
nth_element(aparitiiC[i].begin(),aparitiiC[i].begin()+ M/2,aparitiiC[i].end());
Culorii[i].coloana=aparitiiC[i][M/2];
for(j=0;j<M;j++){
if(aparitiiC[i][j]>Culorii[i].coloana)
Culorii[i].contor+=aparitiiC[i][j]-Culorii[i].coloana;
else
Culorii[i].contor+=-aparitiiC[i][j]+Culorii[i].coloana;
if(aparitiiL[i][j]>j)
Culorii[i].contor+=aparitiiL[i][j]-j;
else
Culorii[i].contor+=j-aparitiiL[i][j];
}
if(Culorii[i].contor<Maxim){
sol=i;
Maxim=Culorii[i].contor;
}
}
}
void afisare() {
ofstream out("trecere.out");
out<<Culorii[sol].contor<<' '<<sol<<' '<<Culorii[sol].coloana<<'\n';
out.close();
}
int main() {
citire();
solve();
afisare();
return 0;
}