Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

different result on different OJ

Posted by Analgesic at 2009-08-19 09:22:52 on Problem 1141
ZOJ: WA
POJ: AC

Is the test data different or the check program different?

this is my submit:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#define MAXL 100
using namespace std;
int opt[MAXL+1][MAXL+1];
string text;
string opt_str[MAXL+1][MAXL+1];

int solve(int s,int l){
  int min=2e9,temp;
  string min_str;
  if(opt[s][l]!=-1) return opt[s][l];
  if(text[s]=='('&&text[s+l-1]==')' || text[s]=='['&&text[s+l-1]==']'){
    temp=solve(s+1,l-2);
    if(temp<min){
      min=temp;
      if(text[s]=='(')
	min_str="("+opt_str[s+1][l-2]+")";
      else
	min_str="["+opt_str[s+1][l-2]+"]";
    }
  }
  if(text[s]=='('){
    temp=solve(s+1,l-1)+1;
    if(temp<min){
      min=temp;
      min_str="("+opt_str[s+1][l-1]+")";
    }
  }
  if(text[s]=='['){
    temp=solve(s+1,l-1)+1;
    if(temp<min){
      min=temp;
      min_str="["+opt_str[s+1][l-1]+"]";
    }
  }
  if(text[s+l-1]==')'){
    temp=solve(s,l-1)+1;
    if(temp<min){
      min=temp;
      min_str="("+opt_str[s][l-1]+")";
    }
  }
  if(text[s+l-1]==']'){
    temp=solve(s,l-1)+1;
    if(temp<min){
      min=temp;
      min_str="["+opt_str[s][l-1]+"]";
    }
  }
  for(int i=1;i<l;++i){
    temp=solve(s,i)+solve(s+i,l-i);
    if(temp<min){
      min=temp;
      min_str=opt_str[s][i]+opt_str[s+i][l-i];
    }
  }
  opt[s][l]=min;
  opt_str[s][l]=min_str;
  return min;
}
void init(){
  memset(opt,-1,sizeof(opt));
  for(int i=0;i<=text.length();++i){
    opt[i][0]=0;
    opt_str[i][0]="";
  }
}
int main(){
  char buffer[MAXL+2];
  while(fgets(buffer,MAXL+2,stdin)){
    text=string(buffer,buffer+strlen(buffer)-1);
    if(buffer[0]=='\n'){
      cout<<endl;
      continue;
    }
    init();
    solve(0,text.length());
    cout<<opt_str[0][text.length()]<<endl;
  }
  return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator