Pagini recente »
Istoria paginii runda/2024-09-25-clasa-7-tema-3
|
Clasament 2024-04-09-clasa-6-tema-27
|
Utilizatori înregistrați la c4_5
|
Borderou de evaluare (job #804980)
|
Cod sursă (job #307242)
Cod sursă (job
#307242)
#include <bits/stdc++.h>
#define MAXN 2048
int X[MAXN+1],Y[MAXN+1],Z[MAXN+1],T[MAXN+1];
std::vector <int> g[3*MAXN+1];
int v[3*MAXN+1];
bool viz[3*MAXN+1];
bool cauta(int nod){
for(auto it:g[nod])
if(v[it]==0){
v[nod]=it;
v[it]=nod;
return 1;
}
viz[nod]=1;
for(auto it:g[nod])
if(viz[v[it]]==0&&cauta(v[it])==1){
v[it]=nod;
v[nod]=it;
return 1;
}
return 0;
}
int main(){
FILE*fi,*fout;
int i,n,j,ans;
bool flag;
fi=fopen("canibali.in" ,"r");
fout=fopen("canibali.out" ,"w");
fscanf(fi,"%d " ,&n);
for(i=1;i<=n;i++)
fscanf(fi,"%d %d %d %d " ,&X[i],&Y[i],&Z[i],&T[i]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j&&X[i]>=X[j]&&Y[i]>=Y[j]&&Z[i]>=Z[j]&&T[i]>=T[j]){
if(X[i]==X[j]&&Y[i]==Y[j]&&Z[i]==Z[j]&&T[i]==T[j]){
if(i<j){
g[i].push_back(j+2*n);
g[i+n].push_back(j+2*n);
}
}
else{
g[i].push_back(j+2*n);
g[i+n].push_back(j+2*n);
}
}
flag=1;
while(flag){
memset(viz,0,sizeof(viz));
flag=0;
for(i=1;i<=2*n;i++)
if(v[i]==0)
flag|=cauta(i);
}
ans=0;
for(i=1;i<=2*n;i++)
ans+=(v[i]>0);
fprintf(fout,"%d" ,n-ans);
fclose(fi);
fclose(fout);
return 0;
}