diff options
| author | Aditya Naik | 2018-05-10 00:15:29 -0400 |
|---|---|---|
| committer | Aditya Naik | 2018-05-10 00:15:29 -0400 |
| commit | 631ca6817d552db1725c7d6a445705f709302139 (patch) | |
| tree | 4ed1e943305fd5ff0772336034ee2a47458e68cc | |
| parent | 42fe0d8a06c1cecb7771823b9ae51220c469dc82 (diff) | |
reorg
| -rw-r--r-- | 10114/lonesome.cpp | 38 | ||||
| -rwxr-xr-x | 10141/rfp | bin | 0 -> 63128 bytes | |||
| -rw-r--r-- | 10141/rfp.cpp | 37 | ||||
| -rw-r--r-- | 10141/rfp.in | 32 | ||||
| -rwxr-xr-x | 12060/average | bin | 0 -> 35696 bytes | |||
| -rw-r--r-- | 12060/average.cpp | 119 | ||||
| -rw-r--r-- | 12060/average.in | 8 | ||||
| -rwxr-xr-x | 12085/mobile | bin | 0 -> 77120 bytes | |||
| -rw-r--r-- | 12085/mobile.c | 17 | ||||
| -rw-r--r-- | 12085/mobile.cpp | 49 | ||||
| -rw-r--r-- | 12085/mobile.in | 540 | ||||
| -rwxr-xr-x | 556/amazing | bin | 0 -> 102112 bytes | |||
| -rw-r--r-- | 556/amazing.cpp | 163 | ||||
| -rw-r--r-- | 556/amazing.in | 108 | ||||
| -rw-r--r-- | 556/amazing.py | 4 | ||||
| -rw-r--r-- | 556/backup | 126 |
16 files changed, 1241 insertions, 0 deletions
diff --git a/10114/lonesome.cpp b/10114/lonesome.cpp new file mode 100644 index 0000000..8c13b11 --- /dev/null +++ b/10114/lonesome.cpp @@ -0,0 +1,38 @@ +#include <iostream> +using namespace std; + +int main() +{ + int dur; + cin>>dur; + while(dur>0) + { + int deprecs, months, depmonth, i; + double dwp, amt, val, cur_depval, iments, deps[100]={0.0}; + bool nend; + + cin>>dwp>>amt>>deprecs; + for(i=0;i<deprecs;i++) + cin>>depmonth>>deps[depmonth]; + + val = dwp+amt; + iments = amt/dur; + nend = true; + + for(months=0; ; ++months) + { + if(deps[months]>0) + cur_depval=deps[months]; + val -= val*cur_depval; + if(val>amt) + break; + amt -= iments; + } + if(months==1) + cout<<months<<" month\n"; + else + cout<<months<<" months\n"; + cin>>dur; + } + return 0; +} diff --git a/10141/rfp b/10141/rfp Binary files differnew file mode 100755 index 0000000..d71b577 --- /dev/null +++ b/10141/rfp diff --git a/10141/rfp.cpp b/10141/rfp.cpp new file mode 100644 index 0000000..2a4f918 --- /dev/null +++ b/10141/rfp.cpp @@ -0,0 +1,37 @@ +#include <iostream> +#include <string> +using namespace std; + +int main(){ + float req, pro; + cin>>req>>pro; + int rfpnum=0; + while(req>0) + { + int i, j, k; + float cost,curcost=1000000000, comp, curcomp=0, numcomp; + string trash, curname, name; + ++rfpnum; + for(i=0; i<=req; i++) + getline(cin, trash); + + for(j=0; j<pro; j++){ + getline(cin, name); + cin>>cost>>numcomp; + comp = numcomp/req; + + if(comp>curcomp || (comp==curcomp && cost<curcost)){ + curname = name; + curcomp = comp; + curcost = cost; + } + + for(k=0;k<=numcomp;k++) + getline(cin, trash); + } + if(rfpnum>1) cout<<"\n"; + cout<<"RFP #"<<rfpnum<<"\n"<<curname<<"\n"; + cin>>req>>pro; + } + return 0; +} diff --git a/10141/rfp.in b/10141/rfp.in new file mode 100644 index 0000000..f0bc2d6 --- /dev/null +++ b/10141/rfp.in @@ -0,0 +1,32 @@ +6 4 +engine +brakes +tires +ashtray +vinyl roof +trip computer +Chevrolet +20000.00 3 +engine +tires +brakes +Cadillac +70000.00 4 +ashtray +vinyl roof +trip computer +engine +Hyundai +10000.00 3 +engine +tires +ashtray +Lada +6000.00 1 +tires +1 1 +coffee +Starbucks +1.50 1 +coffee +0 0
\ No newline at end of file diff --git a/12060/average b/12060/average Binary files differnew file mode 100755 index 0000000..557795a --- /dev/null +++ b/12060/average diff --git a/12060/average.cpp b/12060/average.cpp new file mode 100644 index 0000000..5627b61 --- /dev/null +++ b/12060/average.cpp @@ -0,0 +1,119 @@ +#include <iostream> +#include <cmath> +#include <iomanip> +using namespace std; + +int find_gcd(int a, int b); +void printer(int c, int q, int num, int deno); + +int main(){ + int n, cnum=0; + cin>>n; + + while(n>0){ + cnum++; + int nm, sum=0; + for(int i=0; i<n; i++){ + cin>>nm; + sum += nm; + } + int gcd; + int deno, num, q; + if(abs(sum)>=n){ + if(sum % n == 0){ + num = sum/n; + deno = 0; + q = 0; + } + else{ + gcd = find_gcd(sum,n); + while(gcd != 1){ + sum /= gcd; + n /= gcd; + gcd = find_gcd(sum,n); + } + q = (sum-(sum%n))/n; + num = sum%n; + deno = n; + } + } + else{ //abs(sum)<n + gcd = find_gcd(n,sum); + while(gcd != 1){ + sum /= gcd; + n /= gcd; + gcd = find_gcd(n,sum); + } + q = 0; + num = sum; + deno = n; + } + printer(cnum, q, num, deno); + cin >> n; + + } +} + +void printer(int c, int q, int num, int deno){ + int dl=0, ql=0, nl=0, x=deno, y=q, z = num; + while (x /= 10) + dl++; + while(y /= 10) + ql++; + while(z /= 10) + nl++; + if(deno == 1 || deno == 0){ + if(num<0) + cout<<"Case "<<c<<":\n"<<"- "<<abs(num)<<endl; + else + cout<<"Case "<<c<<":\n"<<num<<endl; + } + else if(q == 0){ + if(num<0 || deno<0){ + cout<<"Case "<<c<<":\n"; + for(int k=0;k<dl+2;k++) cout<<" "; + cout<<abs(num)<<endl; + cout<<"- "; + for(int k=0;k<dl+1;k++) cout<<"-"; + cout<<endl; + cout<<" "<<abs(deno)<<endl; + } + else{ + cout<<"Case "<<c<<":\n"; + for(int k=0;k<dl;k++) cout<<" "; + cout<<abs(num)<<endl; + for(int k=0;k<dl+1;k++) cout<<"-"; + cout<<endl; + cout<<abs(deno)<<endl; + } + } + else{ + if(num<0 || deno<0){ + cout<<"Case "<<c<<":\n"; + for(int k=0;k<dl+2+ql-nl+1;k++) cout<<" "; + cout<<abs(num)<<endl; + cout<<"- "<<abs(q); + for(int k=0;k<dl+1;k++) cout<<"-"; + cout<<endl; + for(int k=0;k<3+ql;k++) cout<<" "; + cout<<abs(deno)<<endl; + } + else{ + cout<<"Case "<<c<<":\n"; + for(int k=0;k<dl+1+ql-nl;k++) cout<<" "; + cout<<num<<endl; + cout<<q; + for(int k=0;k<dl+1;k++) cout<<"-"; + cout<<endl; + for(int k=0;k<2+ql-1;k++) cout<<" "; + cout<<deno<<endl; + } + } +} + +int find_gcd(int a, int b){ + if(b==0) + return a; + else + return find_gcd(b, a % b); +} diff --git a/12060/average.in b/12060/average.in new file mode 100644 index 0000000..6ae00d8 --- /dev/null +++ b/12060/average.in @@ -0,0 +1,8 @@ +2 -1 1 +100 4 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 +100 -8 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 +1 -10000 +1 10000 +100 -909 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 +100 -99 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +0 diff --git a/12085/mobile b/12085/mobile Binary files differnew file mode 100755 index 0000000..d2a44e4 --- /dev/null +++ b/12085/mobile diff --git a/12085/mobile.c b/12085/mobile.c new file mode 100644 index 0000000..3d65be9 --- /dev/null +++ b/12085/mobile.c @@ -0,0 +1,17 @@ +#include <stdio.h> + +int main(){ + int n; + cin>>n; + while(n>0){ + int i, nums[100000]; + for(i=0; i<n; i++) + cin>>nums[i]; + for(i=n-2; i>=0; i--){ + while(nums[i+1]-nums[i]==1){ + nums[i]=0; + } + } + cin>>n + } +} diff --git a/12085/mobile.cpp b/12085/mobile.cpp new file mode 100644 index 0000000..8daba81 --- /dev/null +++ b/12085/mobile.cpp @@ -0,0 +1,49 @@ +#include <iostream> +#include <string> +#include <math.h> +using namespace std; + +void print_range(int, int, int); + +int main(){ + int n, c=0; + cin>>n; + while(n>0){ + cout<<"Case "<<++c<<":\n"; + int i, nums[100000]; + for(i=0; i<n; i++) + cin>>nums[i]; + + int higher, lower, len=1, temp = nums[0]; + while(temp /= 10) + len++; + + for(i=0; i<n; i++){ + if(nums[i+1]-nums[i]==1){ + lower = nums[i]; + while(nums[i+1]-nums[i]==1){ + i++; + } + higher = nums[i]; + print_range(lower, higher, len); + } + else + cout<<"0"<<nums[i]<<endl; + } + cout<<endl; + cin>>n; + } +} + +void print_range(int lower, int higher, int len){ + int i, k; + string num; + for(i=len-1; ; i--){ + if(lower/int(pow(10.0,i)) != higher/int(pow(10.0,i))) + break; + } + for(k=len-(i+1); k<len; k++){ + num += to_string(higher)[k]; + } + cout<<"0"<<lower<<"-"<<num<<endl; +} diff --git a/12085/mobile.in b/12085/mobile.in new file mode 100644 index 0000000..33e6c07 --- /dev/null +++ b/12085/mobile.in @@ -0,0 +1,540 @@ +44 +01953 +01954 +01955 +01956 +01957 +01958 +01959 +01960 +01961 +01962 +01963 +01964 +01965 +01966 +01967 +01968 +01969 +01970 +01971 +01972 +01973 +01974 +01975 +01976 +01977 +01978 +01979 +01980 +01981 +01982 +01983 +01984 +01985 +01986 +01987 +01988 +01989 +01990 +01991 +01992 +01993 +01999 +02000 +02001 +85 +09830 +09831 +09832 +09833 +09834 +09835 +09836 +09837 +09838 +09839 +09840 +09841 +09842 +09843 +09844 +09845 +09846 +09847 +09848 +09849 +09850 +09851 +09852 +09853 +09854 +09855 +09856 +09857 +09858 +09859 +09860 +09861 +09862 +09863 +09864 +09865 +09866 +09867 +09868 +09869 +09870 +09871 +09872 +09873 +09874 +09875 +09876 +09877 +09878 +09879 +09880 +09881 +09882 +09883 +09884 +09885 +09886 +09890 +09891 +09892 +09893 +09894 +09895 +09896 +09897 +09898 +09901 +09902 +09903 +09904 +09905 +09906 +09907 +09908 +09909 +09910 +09911 +09912 +09913 +09914 +09915 +09917 +09918 +09919 +09920 +64 +02496 +02497 +02498 +02499 +02500 +02501 +02502 +02503 +02504 +02505 +02507 +02508 +02509 +02510 +02511 +02512 +02513 +02514 +02515 +02516 +02517 +02518 +02519 +02525 +02526 +02527 +02528 +02529 +02530 +02531 +02532 +02533 +02534 +02535 +02536 +02537 +02540 +02541 +02542 +02543 +02544 +02545 +02546 +02547 +02548 +02549 +02550 +02551 +02552 +02553 +02554 +02555 +02556 +02557 +02558 +02559 +02560 +02562 +02563 +02564 +02567 +02568 +02569 +02570 +42 +01013 +01014 +01015 +01016 +01017 +01018 +01019 +01020 +01021 +01022 +01023 +01024 +01025 +01026 +01027 +01028 +01029 +01030 +01031 +01032 +01033 +01036 +01037 +01038 +01039 +01040 +01041 +01042 +01043 +01044 +01045 +01046 +01047 +01048 +01049 +01050 +01051 +01052 +01053 +01054 +01055 +01056 +61 +09432 +09433 +09434 +09435 +09436 +09437 +09438 +09439 +09440 +09441 +09442 +09443 +09444 +09445 +09446 +09447 +09448 +09449 +09450 +09451 +09452 +09453 +09454 +09455 +09456 +09457 +09458 +09460 +09461 +09462 +09463 +09464 +09465 +09466 +09467 +09468 +09469 +09470 +09471 +09472 +09473 +09474 +09475 +09476 +09477 +09478 +09479 +09480 +09481 +09482 +09483 +09484 +09485 +09486 +09487 +09488 +09491 +09492 +09493 +09494 +09496 +43 +06931 +06932 +06933 +06934 +06935 +06936 +06937 +06938 +06939 +06940 +06941 +06942 +06943 +06944 +06945 +06946 +06947 +06948 +06949 +06950 +06951 +06952 +06953 +06954 +06955 +06956 +06957 +06958 +06959 +06960 +06961 +06962 +06963 +06964 +06967 +06968 +06969 +06970 +06971 +06972 +06974 +06975 +06981 +61 +08801 +08802 +08803 +08804 +08805 +08806 +08807 +08808 +08809 +08810 +08811 +08812 +08813 +08814 +08815 +08816 +08817 +08818 +08819 +08820 +08821 +08822 +08823 +08824 +08825 +08826 +08827 +08828 +08829 +08830 +08831 +08832 +08840 +08841 +08842 +08843 +08844 +08845 +08846 +08847 +08848 +08849 +08850 +08851 +08852 +08853 +08854 +08856 +08857 +08858 +08859 +08862 +08863 +08864 +08865 +08866 +08867 +08868 +08869 +08870 +08871 +14 +0825 +0826 +0827 +0828 +0829 +0830 +0831 +0832 +0833 +0834 +0835 +0836 +0837 +0838 +38 +07396 +07397 +07398 +07399 +07400 +07401 +07402 +07403 +07404 +07405 +07406 +07407 +07408 +07409 +07410 +07411 +07412 +07413 +07414 +07415 +07416 +07417 +07418 +07419 +07420 +07421 +07422 +07423 +07424 +07425 +07426 +07427 +07428 +07429 +07430 +07431 +07432 +07433 +77 +07587 +07588 +07589 +07590 +07591 +07593 +07594 +07595 +07596 +07597 +07598 +07599 +07600 +07601 +07602 +07603 +07604 +07605 +07606 +07607 +07608 +07609 +07610 +07611 +07612 +07613 +07614 +07615 +07616 +07617 +07618 +07619 +07620 +07621 +07622 +07623 +07624 +07625 +07626 +07627 +07628 +07629 +07630 +07631 +07632 +07633 +07634 +07635 +07636 +07637 +07638 +07639 +07640 +07641 +07642 +07643 +07644 +07645 +07646 +07647 +07648 +07649 +07650 +07651 +07652 +07653 +07654 +07655 +07656 +07657 +07658 +07659 +07660 +07661 +07662 +07663 +07666 +0 diff --git a/556/amazing b/556/amazing Binary files differnew file mode 100755 index 0000000..9a65934 --- /dev/null +++ b/556/amazing diff --git a/556/amazing.cpp b/556/amazing.cpp new file mode 100644 index 0000000..e9bc8d6 --- /dev/null +++ b/556/amazing.cpp @@ -0,0 +1,163 @@ +#include <iostream> +#include <string> +#include <vector> +#include <iomanip> +using namespace std; +/* +rows +j 0 1 2 3 4 +i +0 <0 1 0 1 0> +1 <0 1 0 1 0> +2 <0 0 0 0 0> + */ +// struct sq{ +// sq* N; +// sq* S; +// sq* E; +// sq* W; +// int count; +// }; + + +char turn_left(char); +char turn_right(char); + +int main(){ + int b, w, count[100][100]={0}; + vector<char> sq[100]; + string s; + + cin>>b>>w; + while(b>0){ + int count[100][100]={0}; + vector<char> sq[100]; + string s; + + for(int i=0;i<b;i++){ + cin>>s; + for(int j=0;j<w;j++) + sq[i].push_back(s[j]); + } + + int j = 0, i=b-1; + int wallj = 0, walli=b; + char dir='E'; + bool returned=false; + + while(!returned){ + if((walli<b && walli>=0) && (wallj>=0 && wallj<w)) + if(sq[walli][wallj]=='0'){ + if(dir=='S'){ + walli--; + wallj++; + } + else if(dir=='W'){ + walli++; + wallj++; + } + else if(dir=='N'){ + walli++; + wallj--; + } + else if(dir=='E'){ + walli--; + wallj--; + } + dir = turn_right(dir); + } + + if(dir=='E'){ + if(j+1<w && sq[i][j+1]=='0'){ + j++; + wallj++; + count[i][j]++; + } + else{ + dir = turn_left(dir); + walli--; + wallj++; + } + } + else if(dir=='N'){ + if(i-1>=0 && sq[i-1][j]=='0'){ + i--; + walli--; + count[i][j]++; + } + else{ + dir = turn_left(dir); + walli--; + wallj--; + } + } + else if(dir=='W'){ + if(j-1>=0 && sq[i][j-1]=='0'){ + j--; + wallj--; + count[i][j]++; + } + else{ + dir = turn_left(dir); + walli++; + wallj--; + } + } + else if(dir=='S'){ + if(i+1<b && sq[i+1][j]=='0'){ + i++; + walli++; + count[i][j]++; + } + else{ + dir = turn_left(dir); + walli++; + wallj++; + } + } + + if(i==b-1 && j==0) + returned = true; + } + + int visited[5]={0}; + for(int i=0; i<b; i++){ + for(int j=0; j<w; j++){ + if(count[i][j]>4) + continue; + else if(sq[i][j]=='0') + visited[count[i][j]]++; + } + } + for(int k=0; k<5; k++) + cout<<right<<setw(3)<<visited[k]; + cout<<endl; + cin>>b>>w; + } +} + +char turn_left(char dir){ + char new_dir; + if(dir=='E') + new_dir = 'N'; + else if(dir=='N') + new_dir = 'W'; + else if(dir=='W') + new_dir = 'S'; + else if(dir == 'S') + new_dir = 'E'; + return new_dir; +} + +char turn_right(char dir){ + char new_dir; + if(dir=='E') + new_dir = 'S'; + else if(dir=='N') + new_dir = 'E'; + else if(dir=='W') + new_dir = 'N'; + else if(dir == 'S') + new_dir = 'W'; + return new_dir; +} diff --git a/556/amazing.in b/556/amazing.in new file mode 100644 index 0000000..52d676a --- /dev/null +++ b/556/amazing.in @@ -0,0 +1,108 @@ +11 10 +0010000100 +0100000001 +0100000100 +1010000000 +0001000000 +0000000000 +0011011000 +0010000001 +0101000000 +0000000011 +0010100101 +2 24 +001100010000000000000000 +000010101100101000001010 +12 28 +1000100000101000010000100100 +0001001000000001001001000010 +0000000000000100000001000100 +1000011100000000000100000001 +0001000100010010000011000010 +0000100000000000000001101000 +0000000000000000001010000000 +0100000000010010000000100000 +0001000000110000101010100100 +0000110000001101000000001000 +0000100000111001000000100000 +0001101100000010111010111100 +29 6 +000000 +111000 +110011 +000000 +110011 +000000 +000100 +101000 +000000 +000100 +100001 +000100 +010000 +001010 +000000 +001010 +100110 +001100 +110000 +001000 +000001 +000100 +100000 +000000 +001000 +001100 +000000 +010000 +000000 +8 27 +110100000100000100010000000 +000000000001010101010000001 +000110110000010000010000001 +000100100001000001000000000 +000000001000111101000010010 +001000100100110001000010100 +001000000011000000000101000 +000000000000000100000001000 +11 24 +010000100000000001001001 +000000000101001000000110 +010000000010000000000101 +010010001100000001000001 +000100000000000000100100 +000100011010100000101000 +001001000100000000100101 +001001110000000000000001 +110011001000100001000000 +000000001000100100110100 +000010100000000000011001 +8 29 +01000110000000000000010000000 +11010101000000000011000000000 +00000000100100100000000000000 +11000100011000000000001010000 +00000001111000100000000000000 +00000011000000000000100100100 +00011100000111001100100000000 +00110000001000100000100011100 +5 3 +001 +010 +100 +000 +000 +9 3 +011 +000 +011 +000 +000 +000 +000 +000 +000 +2 11 +00000000001 +00111001000 +0 0
\ No newline at end of file diff --git a/556/amazing.py b/556/amazing.py new file mode 100644 index 0000000..6df6194 --- /dev/null +++ b/556/amazing.py @@ -0,0 +1,4 @@ + + +class square: + diff --git a/556/backup b/556/backup new file mode 100644 index 0000000..2ffcb12 --- /dev/null +++ b/556/backup @@ -0,0 +1,126 @@ +#include <iostream> +#include <string> +#include <vector> +using namespace std; +/* +rows +j 0 1 2 3 4 +i +0 <0 1 0 1 0> +1 <0 1 0 1 0> +2 <0 0 0 0 0> + */ +// struct sq{ +// sq* N; +// sq* S; +// sq* E; +// sq* W; +// int count; +// }; + + +char turn_left(char); +char turn_right(char); + +int main(){ + int b, w, count[100][100]={0}; + vector<char> sq[100]; + string s; + + cin>>b>>w; + while(b>0){ + for(int i=0;i<b;i++){ + cin>>s; + for(int j=0;j<w;j++) + sq[i]; + } + + int j = 0, i=b-1; + int wallj = 0, walli=b; + char dir='E'; + bool returned=false; + + while(!returned){ + count[i][j]++; + + if(sq[walli][wallj]==0) + dir = turn_right(dir); + + if(dir=='E'){ + if(j+1<w && sq[i][j+1]=='0'){ + j++; + wallj++; + } + else + dir = turn_left(dir); + } + else if(dir=='N'){ + if(i-1>=0 && sq[i-1][j]=='0'){ + i--; + walli--; + } + else + dir = turn_left(dir); + } + else if(dir=='W'){ + if(j-1>=0 && sq[i][j-1]=='0'){ + j--; + wallj--; + } + else + dir = turn_left(dir); + } + else if(dir=='S'){ + if(i+1<b && sq[i+1][j]=='0'){ + i++; + walli++; + } + else + dir = turn_left(dir); + } + + if(i==b-1 && j==0) + returned = true; + } + + int visited[5]={0}; + for(int i=0; i<b; i++){ + for(int j=0; j<w; j++){ + if(count[i][j]>4) + continue; + else if(sq[i][j]=='0') + visited[count[i][j]]++; + } + } + for(int k=0; k<5; k++) + cout<<visited[k]<<" "; + cout<<endl; + cin>>b>>w; + } +} + +char turn_left(char dir){ + char new_dir; + if(dir=='E') + new_dir = 'N'; + else if(dir=='N') + new_dir = 'W'; + else if(dir=='W') + new_dir = 'S'; + else if(dir == 'S') + new_dir = 'E'; + return new_dir; +} + +char turn_right(char dir){ + char new_dir; + if(dir=='E') + new_dir = 'S'; + else if(dir=='N') + new_dir = 'E'; + else if(dir=='W') + new_dir = 'N'; + else if(dir == 'S') + new_dir = 'W'; + return new_dir; +} |
