Sunt in clasa a 6-a si am facut problema de 30 puncte nu inteleg care este sistemul lor de corectare dar nu sunt multumit,am dat nu stiu cate teste si imi da bine
.Ideea mea este sa fac un for pana la ultima pozitie de 2 si sa inlocuiesc de la 1-ultima pozitie de 1 cu prinul numar de 1 luat de la sfarsit si de la x(ultima pozitie de 1)+1-ultima pozitie de 2 cu primul element de la n la ultima pozitie de 2+1 intr-un alt vector sortat.Nu sunt sigur daca m-am facut inteles,dar uite si sursa ca sa intelegeti mai bine:
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
ifstream fin("sort.in");
ofstream fout("sort.out");
int a,v[50002],w[50002],i,j,k,ok,minim,maxim,n,m,x,o,p,y,s;
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>v
;
w=v;
}
sort(w+1,w+n+1);
maxim=1;
for(i=1;i<=n;i++){
if(w>maxim){
x=i-1;
break;
}
}
maxim=3;
for(i=n;i>=1;i--){
if(w<maxim){
y=i;
break;
}
}
for(i=1;i<=y;i++){
if(i<=x&&v!=1){
for(j=n;j>x;j--){
if(v[j]==1){
s++;
m=v;
v=v[j];
v[j]=m;
break;
}
}
}
if(i>x&&i<=y&&v!=2){
for(j=n;j>y;j--){
if(v[j]==2){
s++;
m=v;
v=v[j];
v[j]=m;
break;
}
}
}
}
fout<<s;
return 0;
}