Skip to main content

Posts

Showing posts from February, 2017

BORW - Black or White

Problem Link #include <iostream> #include <cstring> using namespace std; typedef long int li; const int size = 201; int n; li arr[size]; int dp[size][size][size]; int main() {     while(true)     {         cin >> n;         if(n == -1)             break;         for(int i = 1; i <= n; i++)             cin >> arr[i];         memset(dp, 0, sizeof(dp));         for(int i = 1; i <= n; i++)         {             for(int lb = i + 1; lb <= n + 1; lb++)             {                 for(int lw = i + 1; lw <= n + 1; lw++)                 {    ...

BADXOR

BADXOR - Bad XOR #include <iostream> #include <cstring> #define REP(i, n) for(int i = 0; i < n; i++) #define REP1(i, n) for(int i = 1; i <= n; i++) using namespace std; typedef long long int ll; const int maxLimit = 100000007; ll dp[1005][1024]; //dp[i][j] = number of ways of making value j with first i elements int main() {     int t, a, b;     int arr1[1001];     bool arr2[1025];     cin >> t;     REP1(k, t)     {         memset(dp, 0, sizeof(dp));         memset(arr2, false, sizeof(arr2));         cin >> a >> b;         REP(i, a)         {             cin >> arr1[i];         }         REP(i, b)         {     ...

ANARC05H

ANARC05H - Chop Ahoy! Revisited! #include <iostream> #include <stdio.h> #include <cstring> using namespace std; char str[26]; int len, sum; int solve(int pos, int prevSum) {     if(pos == len)         return 1;     int c = 0;     for(int i = pos, sum = 0; i < len; i++)     {         sum += str[i] - '0';         if(sum >= prevSum)         {             c += solve(i + 1, sum);         }     }     return c; } int main() {     int k = 1;     while(true)     {         scanf("%s", str);         if(!strcmp(str, "bye"))             break;         len = strlen(str);   ...

GCD2

GCD2 - GCD2 #include <iostream> #include <string> using namespace std; long long int gcd(long long int a, long long int b) {     if(a == 0)         return b;     return gcd(b % a, a); } long long int reduceNumber(long long int a, string s) {     long long  int r = 0;     for(int i = 0; i < s.size(); i++)     {         r = r * 10 + (s[i] - '0');         r = r % a;     }     return r; } int main() {     int n;     cin >> n;     long long int a, b;     string s;     while(n--)     {         cin >> a;         cin >> s;         if(!a)         {             cout <...

PERMUT2

PERMUT2 - Ambiguous Permutations #include <iostream> #define REP(i, n) for(int i = 0; i < n; i++) using namespace std; const int maxSize = 100001; int arr[maxSize]; int a[maxSize]; int main() {     int n, pos;     bool flag;     while(true)     {         cin >> n;         if(n == 0)             break;         pos = 1;         flag = true;         REP(i, n)         {             cin >> arr[i];             a[arr[i] - 1] = pos;             pos++;         }         REP(i, n)         {             if(a[i] != arr[i])     ...