Pagini recente » Cod sursa (job #1322092) | Cod sursa (job #337684) | Cod sursa (job #1641665) | Cod sursa (job #914533) | Cod sursa (job #109427)
Cod sursa(job #109427)
#include <stdio.h>
long int n, s1, s2, dmin, i, j, p1, p2, v1[5000], v2[5000];
void citesteDate(){
FILE *f;
f=fopen("multimi2.in", "r");
fscanf(f, "%ld", &n);
fclose(f);
}
void determinareSumeP(){
i=1; j=n; s1=0; s2=0;
p1=-1; p2=-1;
int k=1;
while(i<j){
if(k%2==1){
if((p1+2)==n/2) {
p1++; p2++;
v1[p1]=i;v2[p2]=j;
s1=s1+i; s2=s2+j;
}
else{
p1++;
v1[p1]=i; s1=s1+i;
p1++;
v1[p1]=j; s1=s1+j;
}
}
else{
if(p2+1==n/2){}
else{
p2++;
v2[p2]=i; s2=s2+i;
p2++;
v2[p2]=j; s2=s2+j;
}
}
i++; j--; k++;
}
}
void determinaSumeI(){
long int nr_ramase;
v1[0]=1; v1[1]=2;
v2[0]=3;
p1=1; p2=0; s1=3;
i=4; j=n; s2=3;
int k=1;
nr_ramase=n-3;
while(i<j){
if(k%2==1){
if(nr_ramase==2) {
p1++; p2++;
v1[p1]=i;v2[p2]=j;
s1=s1+i; s2=s2+j;
}
else{
p1++;
v1[p1]=i; s1=s1+i;
p1++;
v1[p1]=j; s1=s1+j;
}
}
else{
if(p2+1==n/2){}
else{
p2++;
v2[p2]=i; s2=s2+i;
p2++;
v2[p2]=j; s2=s2+j;
}
}
i++; j--; k++; nr_ramase-=2;
}
}
int main(){
citesteDate();
FILE *f;
f=fopen("multimi2.out", "w");
if(n%2==0){
determinareSumeP();
}
else{
determinaSumeI();
}
//diferenta minima
if(s1>s2){
dmin=s1-s2;
fprintf(f,"%ld\n", dmin);
}
else{
dmin=s2-s1;
fprintf(f,"%ld\n", dmin);
}
//numarul de elemente din prima multime
fprintf(f, "%ld\n", p1+1);
//elementele din prima multime
for(i=0; i<=p1; i++){
fprintf(f, "%ld ", v1[i]);
}
//numarul de elemente din a doua multime
fprintf(f, "\n%ld\n", p2+1);
//elem din a doua multime
for(i=0; i<=p2; i++){
fprintf(f, "%ld ", v2[i]);
}
fclose(f);
return 0;
}