Register
|
Login
Home
News
Competitions
Practice
How to
Rankings
Calendar
Arena
CodeFu 2007
CodeFu'07 Highlights
Jazoon'07 Highlights
Schedule
Rules
Prizes
Results
Competitions
»
Main CodeFu Competitons
»
CodeFu 2007
»
Results
CodeFu 2007 Results
CodeFu Final Round Results
dragan_sahpaski's solution for 200: Consecutive Numbers, written in Java
public class ConsecutiveNumbers { public int[] sort(int[] a){ for(int i=a.length-1;i>=1;i--) for(int j=0;j<i;j++) if(a[j]>a[j+1]){ int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } return a; } public int longestSequence(int[] numbers) { int[] a=sort(numbers); int nuli=0; for(int i=0;i<a.length;i++) if(a[i]==0) nuli++; // for(int i=0;i<a.length;i++)System.out.println(a[i]+" "); boolean uslov=true; int k=nuli; int nuli1=nuli; int max=0; int lastPos=nuli; int lastPos1=nuli; boolean updatedLastPos1=false; while(k<a.length-1){ //System.out.println(k+" "+a[k]+" "+lastPos+" "+max+" "+nuli); if(a[k]==a[k+1]-1){ k++; if((k-lastPos) > max) max=(k-lastPos); // System.out.println("x"+k+" "+a[k]+" "+lastPos+" "+max); } else{ //System.out.println("else"); if( updatedLastPos1==false){ lastPos1=k+1; updatedLastPos1=true; } if((a[k+1]-a[k]-1)<=nuli1){ // System.out.println("else if"); nuli1=nuli1-(a[k+1]-a[k]-1); //System.out.println("nuli1="+nuli1); k++; // System.out.println("k="+k+"lastPos="+lastPos+ "max="+max); if((k-lastPos) > max) max=(k-lastPos); // System.out.println("k="+k+" max="+max); } else if(a[k+1]-a[k]>nuli){ if(k-lastPos > max)max=k-lastPos; k=lastPos1; lastPos=lastPos1; nuli1=nuli; updatedLastPos1=false; } } } return max+1+nuli; } }