/*
//#1
#include <stdio.h>
#define ll long long

ll res=1, nCr[115][115];

void f() {
    for(int i=1; i<=110; i++) {
        for(int j=0; j<=i; j++) {
            if(i==j||j==0) nCr[i][j]=1;
            else nCr[i][j]=nCr[i-1][j-1]+nCr[i-1][j];
        }
    }
}

int main() {

    f();
    
    for(int i=0; i<3; i++) {
        int s;
        ll r;
        scanf("%d", &s);
        r=(s>0? nCr[s+5][2]:20);
        printf("%lld\n", r);
        res*=r;
    }
    printf("%lld", res);
}

//#2
#include <stdio.h>
#include <algorithm>

int main() {
    int n, k, time[100010]={};
    scanf("%d", &n);

    for(int i=0; i<n; i++) {
        scanf("%d", &time[i]);
    }
    std::sort(time, time+n);

    scanf("%d", &k);
   
    if(time[0]>=k) {
		    printf("0");
		    return 0;
    }
    for(int i=0; i<=n; i++) {
        if(time[i+1]-(time[i]+10)>=k) {
            printf("%d", time[i]+10);
            return 0;
        }
    }
    printf("%d", time[n-1]+10);
}

//#3 이거 말고 다른 방법으로 풀고 싶었는데,,,
#include <stdio.h>
#include <string.h>

char st[10];

int main() {

    for(int i=0; i<5; i++)
        scanf(" %c", &st[i]);

    if(strcmp("11111", st)==0) 
        printf("0");
    else if(strcmp("11000", st)==0||strcmp("10001", st)==0||strcmp("00011", st)==0)
        printf("1");
    else if(strcmp("00100", st)==0||strcmp("10110", st)==0||strcmp("01101", st)==0)
        printf("2");
    else if(strcmp("01010", st)==0)
        printf("3");
    else
        printf("-1");
}

//#4
#include <stdio.h>
#include <vector>
#include <queue>
#include <algorithm>

struct node {
  int to, weight;  
};

int n, m, s, w, people[15], visited[15], cnt;
std::vector<node> G[15];

int main() {
    scanf("%d %d", &n, &m);
    for(int i=0; i<m; i++) {
        int a, b, w;
        scanf("%d %d %d",&a, &b, &w);
        G[a].push_back((node){b, w});
        G[b].push_back((node){a, w});
    }
    scanf("%d %d", &s, &w);

    std::queue<int> q;
    visited[s]=1;
    q.push(s);

    while(!q.empty()) {
        int S=q.front();
        q.pop();

        for(int i=0; i<G[S].size(); i++) {
            int nx=G[S][i].to;
            if(G[S][i].weight>=w&&!visited[nx]) {
                visited[nx]=1;
                people[cnt++]=nx;
                q.push(nx);
            }
        }
    }

    if(cnt==0) printf("TT");
    else {
        std::sort(people, people+cnt);
        for(int i=0; i<cnt; i++)
            printf("%d ", people[i]);
    }   
}

//#5_DP..?
#include <stdio.h>

int n, G[1010][1010], dt[1010][1010];
//dt[i][j] : (i, j)까지의 최대 행복

int max(int a, int b) {
    return (a>b? a:b);
}
int main() {
    scanf("%d", &n);

    for(int i=1; i<=n; i++) {
        for(int j=1; j<=n; j++) {
            scanf("%d", &G[i][j]);
        }
    }

    for(int i=1; i<=n; i++) {
        for(int j=1; j<=n; j++) {
            int a=(i>1? dt[i-1][j] : -1999001), b=(j>1? dt[i][j-1] : -1999001);

            if(i==1&&j==1) dt[i][j]=G[i][j];
            else dt[i][j]=G[i][j]+max(a, b);

            //debug: printf("%d ", dt[i][j]);
        }
    //debug: puts("");
    }

    printf("%d", dt[n][n]);
}
/*
int f(int x, int y, int val) {
    if(x==n&&y==n) {
        if(val>res) res=val;
        return;
    }
    if(x<1||y<1||x>n||y>n) return ;
    if(dt[x][y]>val) return;
    else {
        dt[x][y]=val;
    }

    for(int i=0; i<2; i++) {
        int nx=x+dx[i], ny=y+dy[i];
        f(nx, ny, val+G[nx][ny]);
    }
}
*/
//#6
//SASA 정올을 풀어보아요~~
#include <stdio.h>

int n, k, arr[110][110], res=-1, r, c;

int min(int a, int b) {
    return (a<b ? a:b);
}
int max(int a, int b) {
    return (a>b ? a:b);
}

void find(int x, int y) {
    for(int i=x+1; i<=n; i++) {
        if(arr[i][y]==0) {
            r=i-1;
            break;
        }
    }

    for(int i=y+1; i<=k; i++) {
        if(arr[x][i]==0) {
            c=i-1;
            break;
        }
    }
    return;
}

int main() {

    scanf("%d %d", &n, &k);

    for(int i=1; i<=n; i++) {
        for(int j=1; j<=k; j++) {
            scanf("%d", &arr[i][j]);
            arr[i][j]=1-arr[i][j];
        }
    }

    for(int i=1; i<=n; i++) {
        for(int j=1; j<=k; j++) {
            if(arr[i][j]) {
                find(i, j);
                res=max(res, min(r,c)*min(r,c));
            }
        }
    }

    printf("%d", res);
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: