#include<bits/stdc++.h>
using namespace std;
int n;
int a[1005],f[1005];
int main() {
int i, j;
cin>> n; int ans=0;
for (i=0; i<n; i++)cin>>a[i];
for (i=0; i<n; ++i) {
f[i] = 1;
for(j= i-1; j>=0; --j)
if(a[i]>a[j])f[i]= max(f[i],f[j]+1);
ans =max(ans,f[i]);
}
cout<< ans<<"\n";
return 0;
}
# include <iostream>
using namespace std;
const int maxn=100005;
int n;
int a[maxn];
int b[maxn];
void solve(int l, int r)
{
if (l==r) return ;
int mid=(l+r)/2;
solve(l, mid); solve(mid+1,r);
int i=1,j=mid+1,k=1;
while(i<=mid &&j<=r)
{
if (a[i]<=a[j]) b[k++]=a[i++];
else b[k++]=a[j++];
}
while(i<=mid) b[k++]=a[i++];
while(j<=r) b[k++]=a[j++];
for (int i=l; i<=r; i++) a[i]=b[i];
}
int main(){
cin>>n;
for (int i=1; i<=n; i++) cin>>a[i];
solve(1,n);
int ans=0;
for (int i=1; i<=n; i++) ans=ans+a[i]*i;
cout<<ans<<endl;
return 0;
}
#include <stdio.h>
char c[200][200];
int s[200], m, n;
void numara() {
int i,j, cod, nr;
for(j=0; j<n; j++) {
nr=0; cod=1;
for(i=0; i<m; i++) {
if(c[i][j]=='1') {
if(!cod) {cod=1;s[nr]++;nr=0;}
}
else {
if (cod) {nr=1;cod=0;}
else nr++;
}
}
if(!cod) s[nr]++;
}
}
int main() {
int i,j;
scanf("%d %d\n", &m, &n);
for(i= 0; i<m; i++) gets(c[i]);
numara();
for(i=1; i<=m; i++)
if(s[i]!= 0) printf("%d %d",i, s[i]);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=2e6+5;
int n, m, tot;
vector <int> t;
int lc[N], rc[N];
inline bool isleaf(int u) { ___(1)___;}
inline bool solve(vector <int> t) {
if (t.empty()) return false;
for (auto o : t) if (isleaf(o)) return true;
vector<int> t1,t2,t3,t4;
for (auto o : t) {
if(!lc[o]) t2.push_back(rc[o]);
if(!rc[o]) t1.push_back(lc[o]);
if( ___(2)___ ) {
if (isleaf(lc[o])) t3.push_back(rc[o]);
if (isleaf(rc[o])) t4.push_back(lc[o]);
}
}
___(3)___;
}
int main() {
scanf("%d", &m);
for (int i=1; i<=m; ++i) {
int n; scanf("%d" ,&n);___(4)___;
for (int j=1; j<=n; ++j) {
scanf("%d", &lc[tot+j]); if (lc[tot+j]) lc[tot+j] += tot;
scanf("%d", &rc[tot+j]); if (rc[tot+j]) rc[tot+j] += tot;
}
___(5)___;
}
if (solve(t)) printf("Almost Complete\n");
else printf("No\n");
return 0;
}
#include <stdio.h>
#include <math.h>
int orig, n, ns, a [102][102], bun;
int d[]= {1,0,-1,0,0,1,___(1)___};
void plimba(int x, int y) {
int i,xx, yy;
a[x][y]=-a[x][y] ;
if(abs(a[x-1][y] ) != orig&&( ___(2)___ != a[x-1][y]||abs (a[x][y-1] ) != orig)) ns++;
if(abs (a[x+1][y] ) != orig&& (a[x+1][y-1] !=a[x+1][y]||abs (a[x][y-1] ) !=orig)) ns++;
if(abs (a[x][y-1] )!=orig&&( ___(3)___ !=a[x][y-1] ||abs (a[x-1][y] ) !=orig)) ns++;
if(abs(a[x][y+1] ) !=orig&&(a[x-1][y+1]!=a[x][y+1]||abs(a[x-1][y]) !=orig)) ns++;
for(i=0; i<4 ; i++) {
xx=x+d[2*i]; yy=y+___(4)___;
if(xx>=1&&xx<=n&&yy>=1&&yy<=n&& ___(5)___ )plimba(xx,yy);
}
}
int main () {
int i,j;
bun=1;
scanf("%d",&n);
for (i=0; i<=n+1; i++)
for (j=0; j<=n+1; j++) a[i][j]=0;
a[0][0]=-1; a[n+1][0]=-1;
a[0][n+1]=-1; a[n+1][n+1]=-1;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++) scanf("%d",&a[i][j]);
for (i=1; i<=n ; i++)
for(j=1; j<=n; j++) {
if(a[i][j]>-1) {
ns=0; ___(6)___;
plimba (i,j);
if(ns%2==1) bun=0;
}
}
if (bun)printf("YES\n");else printf("NO\n");
return 0;
}