Cod sursa(job #498327)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 4 noiembrie 2010 21:20:40
Problema Subsir 2 Scor 36
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
# include <fstream>
 
  using namespace std;
    
    void make ();
	void read ();
	
	int main (){
		make ();
	    return 0;
	}
	
	int n, a[6000], b[6000], sol[6000], sir[6000];
	
	void read (){
		ifstream f ("subsir2.in");
		f >> n;
		for (int i = 1; i <= n; ++i) f >> a[i];
	}
	
	inline int maxim (int a, int b){
		if (a > b) return a;
		return b;
	}
	
	void make (){
		read ();
		int MAX = 0, cnt = 1, poz, MIN;
		sir[1] = 1;
		for (int i = 1; i < n; ++i)
			for (int j = i + 1; j <= n; ++j)
				if (a[i] <= a[j]){
					int val = sir[i] + 1;
					sir[j] = maxim (sir[j], val);
					MAX = maxim (MAX, val);
				}
		ofstream g ("subsir2.out");
		g << MAX << '\n';
		for (int i = 1; i <= MAX; ++i){
			MIN = 100000000;
			for (int j = cnt; j <= n; ++j){
				if (sir[j] == i && MIN > a[j]) MIN = a[j], poz = j;
			}
			cnt = poz;
			g << poz << ' ';
		}
		g << '\n';
	}