/*
//#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);
}
To embed this project on your website, copy the following code and paste it into your website's HTML: