Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main () {
- int n,i,a,four=0,three=0,two=0,one=0,cnt1,cnt2,cnt3,sum,cnt4,rem,sum1;
- scanf("%d",&n);
- for(i=0; i<n; i++){
- scanf("%d",&a);
- if(a==1) one++;
- if(a==2) two++;
- if(a==3) three++;
- if(a==4) four++;
- }
- if((one>0 && two>0 && three==0 && four>0)){
- if(two%2==0){
- cnt1=two/2;
- rem=0;
- }
- else if(two%2!=0){
- cnt1=two/2;
- rem=2;
- }
- sum1=rem+one;
- if(sum1%4==0) cnt2=sum/4;
- else cnt2=(sum1/4)+1;
- sum=cnt1+cnt2+four;
- printf("%d\n",sum);
- }
- else if(one>0 && two==0 && three>0 && four>0){
- if(one==three){
- cnt1=(one+three)/2;
- }
- if(one>three){
- rem=one-three;
- if(rem%4==0) cnt1=rem/4;
- else if (rem<4) cnt1=1;
- else if (rem>4) cnt1= (rem/4)+1;
- }
- if(one<three){
- rem=three-one;
- cnt1=rem+one;
- }
- sum=four+cnt1;
- printf("%d\n",sum);
- }
- else if(one==0 && two>0 && three>0 && four>0){
- if(two%2==0) cnt1=two/2;
- else cnt1= (two/2)+1;
- sum=three+four+cnt1;
- printf("%d\n",sum);
- }
- else if(one>0 && two>0 && three>0 && four==0){
- if(one==three){
- cnt1=(one+three)/2;
- if(two%2==0) cnt2 =two/2;
- else cnt2=(two/2)+1;
- sum= cnt1+cnt2;
- printf("%d\n",sum);
- return 0;
- }
- if(one>three){
- rem=one-three;
- cnt1=three;
- if(two%2==0) cnt2 =two/2;
- else {
- sum1= (two*2)+rem;
- if(sum1%4==0) cnt2=sum1/4;
- else cnt2= (sum1/4)+1;
- }
- sum= cnt1+cnt2;
- printf("%d\n",sum);
- return 0;
- }
- if(one<three){
- rem=three-one;
- cnt1= rem+ one;
- if(two%2==0) cnt2=two/2;
- else cnt2= (two/2)+1;
- sum= cnt1+cnt2;
- printf("%d\n",sum);
- return 0;
- }
- }
- else if (one==0 && two==0 && three!=0 && four!=0){
- sum=three+four;
- printf("%d\n",sum);
- return 0;
- }
- else if (one!=0 && two==0 && three==0 && four!=0){
- if(one%4==0) cnt1= one/4;
- else cnt1= (one/a)+1;
- sum= cnt1+four;
- printf("%d\n",sum);
- return 0;
- }
- else if (one!=0 && two!=0 && three==0 && four==0){
- sum1=(two*2)+one;
- if(sum1%4==0) cnt1=sum1/4;
- else cnt1= (sum1/4)+1;
- sum=cnt1;
- printf("%d\n",sum);
- return 0;
- }
- else if(one==0 && two!=0 && three!=0 && four==0){
- sum= two+three;
- printf("%d\n",sum);
- return 0;
- }
- else if (one!=0 && two==0 && three!=0 && four==0){
- if(one==three){
- cnt1=(one+three)/2;
- }
- if(one>three){
- rem=one-three;
- if(rem%4==0) cnt1=rem/4;
- else if (rem<4) cnt1=1;
- else if (rem>4) cnt1= (rem/4)+1;
- }
- if(one<three){
- rem=three-one;
- cnt1=rem+one;
- }
- printf("%d\n",cnt1);
- return 0;
- }
- else if (one==0 && two==0 && three==0 && four!=0){
- printf("%d\n",four);
- return 0;
- }
- else if (one==0 && two!=0 && three==0 && four==0){
- if(two%2==0) sum= two/2;
- else sum=(two/2)+1;
- printf("%d\n",sum);
- return 0;
- }
- else if (one!=0 && two==0 && three==0 && four==0){
- if(one%4==0) sum= one/4;
- else sum=(one/4)+1;
- printf("%d\n",sum);
- return 0;
- }
- else if (one==0 && two==0 && three!=0 && four==0){
- printf("%d\n",three);
- return 0;
- }
- else if(one!=0 && two!=0 && three!=0 && four!=0){
- if(one==three){
- cnt1=(one+three)/2;
- if(two%2==0) cnt2 =two/2;
- else cnt2=(two/2)+1;
- sum= cnt1+cnt2+four;
- printf("%d\n",sum);
- return 0;
- }
- if(one>three){
- rem=one-three;
- cnt1=three;
- if(two%2==0) cnt2 =two/2;
- else {
- sum1= (two*2)+rem;
- if(sum1%4==0) cnt2=sum1/4;
- else cnt2= (sum1/4)+1;
- }
- sum= cnt1+cnt2+four;
- printf("%d\n",sum);
- return 0;
- }
- if(one<three){
- rem=three-one;
- cnt1=rem+one;
- if(two%2==0) cnt2=two/2;
- else cnt2= (two/2)+1;
- sum= cnt1+cnt2+four;
- printf("%d\n",sum);
- return 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement