10986

Single source shortest path algorithm and priority_queue used to solve the problem. #include <iostream> #include <queue> #include <cstdio> #include <vector> #define INF 1000000000 #define ll long long using namespace std; /* struct node{ int dest,weight; }; */ int n,m,src,dst; vector<pair<int,int> > vb[20005]; void dijkstra(vector<ll> distance) { int t_dist,t_node; int latency,v; pair<int,int> _intPair; priority_queue<pair<int,int>,vector<pair<int,int> >, greater<pair<int,int>

10223

#include <iostream> #include <cstdio> #define ll long long using namespace std; ll catalan[25]; ll findcatalan(int n) { ll res = 1; int lim; for(int i=n+2;i<=2*n;i++) { if(i%2==0) res*=2; else res*=i; } if((n+2)%2==0) lim = (n+2)/2; else lim = (n+3)/2; for(int i=2;i<lim;i++) { res/=i; } return res; } int binSearch(ll num) { int lw=0,hi=17; int mid;

11608

#include <iostream> #include <cstdio> //#include <fstream> using namespace std; //ofstream out; int main() { int kase=1; int arr[15]; int init_problem_num; int total_problem[15]; int problem_required[15]; //out.open("out.txt"); while(scanf("%d",&init_problem_num)) { if(init_problem_num<0) break; total_problem[0]=init_problem_num; for(int i=0;i<12;i++) { scanf("%d",&arr[i]); if(i>0) total_problem[i]=total_problem[i-1]+arr[i-1]; } for(int i=0;i<12;i++) scanf("%d",&problem_required[i]); printf("Case %d:\n",kase); //out<<"Case "<<kase<<":\n"; kase+=1; int problem_used=0; for(int i=0;i<12;i++) { if(problem_required[i]<=(total_problem[i]-problem_used)) { printf("No problem! :D\n");

11650

#include <cstdio> #include <iostream> #include <cstring> #include <string> using namespace std; void printTime(int tyme) { if(tyme<10) { printf("0%d\n",tyme); } else { printf("%d\n",tyme); } } int main() { int t,hour,min; scanf("%d",&t); char s[10]; int highest = 12*60; int lowest = 0; int mirror; while(t–) { scanf("%s",s); hour = (s[0]-'0')*10; hour += (s[1]-'0'); hour%=12; min = (s[3]-'0')*10;

11689

#include <iostream> #include <cstdio> using namespace std; int main() { int t; int e,f,c; int total_consumed,total_empty; scanf("%d",&t); while(t–) { scanf("%d%d%d",&e,&f,&c); total_consumed=0; total_empty=e+f; while(total_empty>=c) { total_consumed += (total_empty/c); total_empty = total_empty/c + total_empty%c; } cout<<total_consumed<<"\n"; } return 0; }  

Fair Work Load [Top Coder]

This problem was used for: (@ Top coder) Single Round Match 169 Round 1 – Division I, Level Two Single Round Match 169 Round 1 – Division II, Level Three Problem Link class FairWorkload{ public: int getMostWork(vector<int> folder,int worker) { int n = folder.size(); int lw = *max_element(folder.begin(),folder.end()); int hi = accumulate(folder.begin(),folder.end(),0); int mid_load; int

880

#include <iostream> #include <cstdio> #define ul unsigned long long #define INT_MX 2147483641 using namespace std; ul binsearch(ul n,ul lw,ul hi) { ul mid; ul tmp,tmp1,tmp2; while(lw<hi) { mid=(lw+hi)/2; tmp = (mid*(mid+1))/2; if(tmp<=n) lw=mid+1; else if(tmp>n) hi=mid; } return hi; } int main() { ul n; ul diff,hi,lw; ul neumenator,denominator; while(cin>>n) { hi = binsearch(n,0,INT_MX); diff

10494

#include <iostream> #include <cstdio> #include <cstring> //#include <fstream> #define ul unsigned long long using namespace std; int quotient[10005]; ul remainder; int main() { char num[10005]; char op[2]; int div; int pos; int j,k; //ofstream out; //out.open("out_10494.txt"); while(scanf("%s%s%d",num,op,&div)!=EOF) { k=0; remainder=0; for(int i=0;i<strlen(num);i++) { quotient[k] = 0; remainder = remainder*10+(num[i]-'0'); quotient[k] = remainder/div; remainder = remainder%div;

10611

#include <iostream> #include <cstdio> #include <cstring> using namespace std; int arr[50005]; int binSearch(int num,int lw,int hi) { int mid; while(lw<hi) { mid = (hi+lw)/2; if(num<arr[mid]) hi = mid; else if(num>=arr[mid]) lw = mid+1; } return hi; } int main() { int N,Q,a; int len,qry,idx; while(scanf("%d",&N)!=EOF) { scanf("%d",&arr[0]); len = 1; for(int i=1;i<N;i++) { scanf("%d",&a); if(a!=arr[len-1])

719

The solution solves the problem within time limit but there are better solutions, by sorting the array using counting sort might give a better timing. There is also a solution without using a suffix array , simply by adding the string with itself and comparing which one is the lowest sub string. #include <iostream> #include