You are not logged in. Please login at www.codechef.com to post your questions!

×

CHEFELEC ,WA is wrong judgement

Hello the code i have submitted is correct,but i dont know why i got WA judgement

===================================================================================

package dsproject; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;

/ * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. / / * @author samuel / public class Main {

public static void main(String[] args) {
    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        int n = 0, preCnt = 0, postCnt = 0, preD = 0,  left_Index = 0, right_Index = 0;
        long result = 0, aux = 0;
        char ls[] = null;
        String vl[] = null;
        for (int i = 0; i < t; i++) {
            n = Integer.parseInt(br.readLine());
            ls = br.readLine().toCharArray();
            vl = br.readLine().split(" ");

            if (n == 1) {
                System.out.println(0);
                continue;
            }

            result = 0;
            preCnt = 0;
            postCnt = 0;
            preD = 0;
            left_Index = 0;
            right_Index = 0;

            if (ls[0] == '0') {
                for (int j = 1; j < n; j++) {
                    if (ls[j] == '1') {
                        preCnt = Integer.parseInt(vl[j]) - Integer.parseInt(vl[0]);
                        left_Index = j;
                        for (int k = j + 1; k < n; k++) {
                            if (ls[k] == '0') {
                                left_Index = k - 1;
                                break;
                            }
                        }
                        break;
                    }
                }
            }

            if (ls[0] == '1') {
                for (int j = 1; j < n; j++) {
                    if (ls[j] == '0') {
                        left_Index = j - 1;
                        break;
                    }
                }
            }

            if (ls[n - 1] == '1') {
                right_Index = n - 1;
                for (int j = n - 2; j >= 0; j--) {
                    if (ls[j] == '0') {
                        right_Index = j + 1;
                        break;
                    }
                }
            }

            if (ls[n - 1] == '0') {
                right_Index = n - 1;
                for (int j = n - 2; j >= 0; j--) {
                    if (ls[j] == '1') {
                        postCnt = Integer.parseInt(vl[n - 1]) - Integer.parseInt(vl[j]);
                        right_Index = j;
                        for (int k = j - 1; k >= 0; k--) {
                            if (ls[k] == '0') {
                                right_Index = k + 1;
                                break;
                            }
                        }
                        break;
                    }
                }
            }

            result = preCnt + postCnt;
            int maxD = 0;
            if (right_Index != left_Index) {
                maxD = -1;
                for (int j = left_Index; j < right_Index; j++) {
                    if (ls[j + 1] != '1') {//if it is  0
                        preD = Integer.parseInt(vl[j + 1]) - Integer.parseInt(vl[j]);
                        if (maxD <= preD) {
                            maxD = preD;
                        }

                    } else {//if it is 1
                        preD = Integer.parseInt(vl[j + 1]) - Integer.parseInt(vl[j]);
                        if (maxD <= preD) {
                            maxD = preD;
                        }
                        aux = Integer.parseInt(vl[j + 1]) - Integer.parseInt(vl[left_Index]);
                        aux = aux - maxD;
                        result += aux;
                        maxD = -1;
                        int k = j+2;
                        for (; k <= right_Index; k++) {
                            if (ls[k] != '0') {
                                left_Index = k - 1;
                                j = left_Index;
                                j--;
                                break;  
                            }
                        }
                    }
                }
            }
            System.out.println(result);
        }
    } catch (IOException ex) {
    }
}

}

====================================================================================

asked 16 Aug '16, 12:24

jawa2code's gravatar image

3★jawa2code
24127
accept rate: 0%


Hello please let me know what wrong in this code

link

answered 20 Aug '16, 06:47

jawa2code's gravatar image

3★jawa2code
24127
accept rate: 0%

Hello Below is the code that got the 100 points Both my code and this code working same

======================================================================================================== package cook; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; class CHEFELEC { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); while(t-->0) { long n = Long.parseLong(br.readLine()),sum=0; int i; long a[]=new long[100005]; String s1=br.readLine(); String s2=br.readLine(); StringTokenizer st=new StringTokenizer(s2); for(i=0;i<n;i++) {="" a[i]="Long.parseLong(st.nextToken());" }="" for(i="0;i&lt;n;i++)" {="" character="" c="s1.charAt(i);" if(c.equals('1'))="" {="" sum="a[i]-a[0];break;" }="" }="" long="" last="a[i],max=0;" for(++i;i<n;i++)="" {="" if(a[i]-a[i-1]="">max) max=a[i]-a[i-1]; Character c=s1.charAt(i); if(c.equals('1')) { Character c1=s1.charAt(i-1); if(c1.equals('0')) { sum+=a[i]-last-max; } last=a[i];max=0; } } // System.out.println(sum); sum+=a[i-1]-last; System.out.println(sum); } } } ========================================================================================================

link

answered 25 Aug '16, 15:50

jawa2code's gravatar image

3★jawa2code
24127
accept rate: 0%

toggle preview
Preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported
  • mathemetical formulas in Latex between $ symbol

Question tags:

×1,070
×334
×30
×6
×2

question asked: 16 Aug '16, 12:24

question was seen: 895 times

last updated: 25 Aug '16, 15:50