532

#include <iostream> #include <string.h> #include <vector> #include <cstdio> #include <queue> #define ll long long #define INF 100000000 using namespace std; int gr[32][32][32]; bool visit[32][32][32]; int dist[32][32][32]; int x,y,z; int ex,ey,ez; int L,R,C; void bfs() { int tmp_x,tmp_y,tmp_z; queue<int> q; q.push(x); q.push(y); q.push(z); visit[x][y][z]=1; dist[x][y][z] = 0; while(!q.empty()) { tmp_x = q.front(); q.pop(); tmp_y = q.front();

10364

#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #define ll long long using namespace std; int sz[25]; ll sum; bool f; int total_piece; int stick_size; bool visit[25]; int M; bool cmp(int a,int b) { return a>b; } bool backtrack(int present_size,int index,int piece_cnt) { if(stick_size*piece_cnt==sum) return 1; for(int i=index;i<M;i++) { if(visit[i]) continue; if(i>0 && !visit[i-1] &&

622

#include <iostream> #include <string.h> #include <cstring> #include <vector> #include <cstdio> #include <stack> #include <queue> #include <algorithm> #define ll long long using namespace std; int error; string valu,res; int isOprtr(char c) { if(c=='+' || c=='-') return 1; if(c=='*' || c=='/' ||c=='%') return 2; return 0; } //1*(2+3*23+12*34)+3 = 482 //1*(2+3*23+12*34)+3*(4+5*65-13+8-2) = 1445 //2+3*(2+2-1+3+(12+12*3)+3+4) //1*2+3*23+12*34+3*4+5*65-13+8-2 //((20*((((((((100)))))))*100))) int

624

#include <iostream> #include <sstream> #include <string> #include <vector> #include <stack> #include <cstdio> #define INF 100000000 using namespace std; int arr[25]; int res[25]; int SZ; vector<int> vb; bool visit[25]; int ind; int MN; void backtrack(int remaining,int index) { if(remaining<MN) { MN = remaining; SZ = vb.size(); for(int i=0;i<SZ;i++) { res[i] = vb[i]; } } for(int i=index+1;i<ind;i++)

11057

#include <iostream> #include <cstdlib> #include <cstdio> #define SZ 10005 #define INF 100000000 #define ll long long using namespace std; ll a[SZ]; int main() { ll N,M,MN; bool f=0; ll price2,price1; price2 = 1000001; price1 = 1000001; int d = price1+price2; //cout<<d<<"\n"; while(cin>>N) { MN = INF; for(int i=0;i<N;i++) cin>>a[i]; cin>>M; for(int i=0;i<N;i++) { for(int j=0;j<N;j++)

10667

#include <iostream> using namespace std; int arr[105][105]; int s; int Matsum(int a,int b) { int p; int Line[105]; int max_end_here,max_so_far; for(int i=1;i<=s;i++) { p=0; for(int j=a;j<=b;j++) { p+=arr[j][i]; } Line[i]=p; } max_end_here=0; max_so_far=0; for(int i=1;i<=s;i++) { max_end_here+=Line[i]; if(max_end_here<0) max_end_here=0; if(max_end_here>max_so_far) max_so_far=max_end_here; } return max_so_far; } int main() { int t,mx,m; int b,r1,r2,c1,c2; cin>>t; while(t–) {

10074

#include <iostream> using namespace std; int arr[105][105]; int M,N; int Matsum(int a,int b) { int p,max_end_here=0,max_so_far=0; int Line[105]; for(int i=1;i<=N;i++) { p = 0; for(int j=a;j<=b;j++) { p+=arr[j][i]; } Line[i]=p; } max_end_here=0; max_so_far=0; for(int i=1;i<=N;i++) { max_end_here = max_end_here + Line[i]; if(max_end_here<0) max_end_here = 0; if(max_so_far<max_end_here) max_so_far = max_end_here; } return max_so_far; } int main()

108

#include <stdio.h> int a[100][100]={0}; int N; int Line[100]; int KadaneAlg(); int MatSum(int a,int b); int main() { int p=-100; int Max=-100; while(scanf("%d",&N)==1) { Max=-100; p =-100; for(int i=0;i<N;i++) { for(int j=0;j<N;j++) scanf("%d",&a[i][j]); } for(int k=0;k<N;k++) { for(int l=k;l<N;l++) { p = MatSum(k,l); if(p>Max) Max = p; } } printf("%d\n",Max); } return 0; } int MatSum(int

836

This problem also can be solved using Dynamic Programming. #include <iostream> #include <string> #include <cstring> #include <cstdio> using namespace std; string *str = new string [50]; int N; int kaadanealgo(int a,int b) { int line[50]; int max_end_here=0; int max_so_far=0; for(int i=0;i<N;i++) { line[i] = 0; for(int j=a;j<=b;j++) { if(str[j][i]=='0') line[i]+=-1000000; else line[i]+=(str[j][i]-'0'); } } for(int