sam.guest947
BAN USERimport java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class pixel {
public static void main(String[] args){
try{
FileInputStream f = null;
String line;
int linecount=0;
ArrayList rows=new ArrayList();
int checker=0;
boolean flag=true;
f = new FileInputStream("sample.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(f));
while ((line = br.readLine()) != null) {
if(line.length()==1000){
for(int i=0;i<line.length();i++){
if(!(line.charAt(i)=='1')){
flag=false;
checker++;
break;
}
}
if(flag || checker>1000){
if(checker>1000){
rows.add(linecount);
}
else{
rows.add(linecount+1);
}
checker=0;
}
linecount++;
flag=true;
}
}
for(int i=0;i<rows.size();i++){
System.out.print(rows.get(i) + "\n");
}
}
catch(Exception e){
System.out.print("Error");
}
}
}
Works for input {-1,-1,-10,-6,-10}
output : {-1,-1}.
Please comment if the code fails for any input.
import java.util.*;
public class Subarray {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr={-1,1,10,-6,-10};
//int[] arr={-1,-2,-5,-4,-9};
int max=0,prev_max=0;
int check_mark = arr[0]+arr[1];
boolean in_negate=false;
int start_index=0,end_index=0;
int best_score=0, arr_score=0;
for(int p=0;p<arr.length;p++){
best_score+=arr[p];
}
ArrayList output_arr=new ArrayList();
ArrayList temp_arr=new ArrayList();
for(int i=0;i<arr.length-1;i++){
max+=arr[i];
temp_arr.add(arr[i]);
for(int j=i+1;j<arr.length;j++){
prev_max=max;
max+=arr[j];
if(j!=i+1){
if(max>prev_max && max>=best_score){
if(in_negate){
for(int t=start_index;t<end_index+1;t++){
temp_arr.add(arr[t]);
}
if(end_index!=j){
temp_arr.add(arr[j]);
}
start_index=0;
end_index=0;
in_negate=false;
}
else{
temp_arr.add(arr[j]);
}
}
else{
if(start_index==0 &&end_index==0){
start_index=j;
if(arr.length-1==j){
end_index=j;
}
else
{
end_index=j+1;
}
in_negate=true;
}
else
{
end_index=j;
}
}
if(max>best_score){
best_score=max;
}
else if(prev_max>best_score){
best_score=prev_max;
in_negate=false;
}
}
else{
temp_arr.add(arr[j]);
if(max>best_score){
best_score=max;
}
else if(prev_max>best_score){
best_score=prev_max;
}
}
}
for(int k=0;k<temp_arr.size();k++){
arr_score+=(Integer)(temp_arr.get(k));
}
if((check_mark<=arr_score)){
output_arr=(ArrayList) temp_arr.clone();
check_mark=best_score;
}
temp_arr.clear();
max=0;
prev_max=0;
arr_score=0;
in_negate=false;
start_index=0;
end_index=0;
}
System.out.print("\n\n\n " +output_arr);
}
}
Please comment, if my understanding is wrong and if you find any issues in the code.
- sam.guest947 February 22, 2015